java发送邮件

Posted 完美世界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java发送邮件相关的知识,希望对你有一定的参考价值。

1.安装所需的email的jar包

2.发送一封简单的Email

package com.mylight;

import java.util.Properties;
import java.util.UUID;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class TestMail {
    public static void main(String[] args) {

        // 收件人电子邮箱
        String to = "****@163.com";

        // 发件人电子邮箱
        String from = "****@qq.com";

        senEmail(to, from);
    }

    private static void senEmail(String to, String from) {
        // 指定发送邮件的主机为 smtp.qq.com
          final String host = "smtp.163.com";  //QQ 邮件服务器
     
          // 获取系统属性
          final Properties properties = System.getProperties();
     
          // 设置邮件服务器
          properties.setProperty("mail.smtp.host", host);
     
          properties.put("mail.smtp.auth", "true");
          // 获取默认session对象
          final Session session = Session.getDefaultInstance(properties,new Authenticator(){
            public PasswordAuthentication getPasswordAuthentication()
            {
             return new PasswordAuthentication(from, "****"); //发件人邮件用户名、密码(授权密码)  与登录密码不同
            }
           });
     
          try{
             // 创建默认的 MimeMessage 对象
             final MimeMessage message = new MimeMessage(session);
     
             // Set From: 头部头字段
             message.setFrom(new InternetAddress(from));
     
             // Set To: 头部头字段
             message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
     
             // Set Subject: 头部头字段
             message.setSubject("验证码");
     
             // 设置消息体
             message.setText("你的验证码为:" + String.valueOf(UUID.randomUUID()).substring(0, 6).toUpperCase());
     
             // 发送消息
             Transport.send(message);
             System.out.println("Sent message successfully....from.com");
          }catch (final MessagingException mex) {
             mex.printStackTrace();
          }
    }
}

3.发送一段html的email

package com.mylight;

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class HtmlTestEmail {
    public static void main(String[] args) {
            
         // 收件人电子邮箱
          String to = "****@163.com";
     
          // 发件人电子邮箱
          String from = "****@163.com";
     
          // 指定发送邮件的主机为 localhost
          String host = "smtp.163.com";
     
          // 获取系统属性
          Properties properties = System.getProperties();
     
          // 设置邮件服务器
          properties.setProperty("mail.smtp.host", host);
          //设置验证
          properties.put("mail.smtp.auth", "true");
          // 获取默认的 Session 对象。
          Session session = Session.getDefaultInstance(properties,new Authenticator() {
              
              public PasswordAuthentication getPasswordAuthentication()
                {
                 return new PasswordAuthentication(from, "***"); //发件人邮件用户名、密码
                }
        });
     
          try{
             // 创建默认的 MimeMessage 对象。
             MimeMessage message = new MimeMessage(session);
     
             // Set From: 头部头字段
             message.setFrom(new InternetAddress(from));
     
             // Set To: 头部头字段
             message.addRecipient(Message.RecipientType.TO,
                                      new InternetAddress(to));
     
             // Set Subject: 头字段
             message.setSubject("This is the Subject Line!");
     
             // 发送 HTML 消息, 可以插入html标签
             message.setContent("<h1>This is actual message</h1>",
                                "text/html" );
     
             // 发送消息
             Transport.send(message);
             System.out.println("Sent message successfully....");
          }catch (MessagingException mex) {
             mex.printStackTrace();
          }
    }
}

4.发送带有附件的Email

package com.mylight;

import java.io.File;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class FjTestEmail {
    public static void main(String[] args) {
        
        // 收件人电子邮箱
          String to = "****@163.com";
     
          // 发件人电子邮箱
          String from = "****@163.com";
     
          // 指定发送邮件的主机为 localhost
          String host = "smtp.163.com";
     
          // 获取系统属性
          Properties properties = System.getProperties();
     
          // 设置邮件服务器
          properties.setProperty("mail.smtp.host", host);
          //设置验证
          properties.put("mail.smtp.auth", "true");
          // 获取默认的 Session 对象。
          Session session = Session.getDefaultInstance(properties,new Authenticator() {
              
              public PasswordAuthentication  getPasswordAuthentication(){
                  
                return new PasswordAuthentication(from, "lcy1992111");
              }
              
        });
     
          try{
             // 创建默认的 MimeMessage 对象。
             MimeMessage message = new MimeMessage(session);
     
             // Set From: 头部头字段
             message.setFrom(new InternetAddress(from));
     
             // Set To: 头部头字段
             message.addRecipient(Message.RecipientType.TO,
                                      new InternetAddress(to));
     
             // Set Subject: 头字段
             message.setSubject("This is the Subject Line!");
     
             // 创建消息部分
             BodyPart messageBodyPart = new MimeBodyPart();
     
             // 消息
             messageBodyPart.setText("This is message body");
            
             // 创建多重消息
             Multipart multipart = new MimeMultipart();
     
             // 设置文本消息部分
             multipart.addBodyPart(messageBodyPart);
     
             // 附件部分
             messageBodyPart = new MimeBodyPart();
             //发送的附件路径
             File file = new File("C:\\\\Users\\\\sxcd\\\\Desktop\\\\work\\\\codecommit.txt");
            
             DataSource source = new FileDataSource(file);
             messageBodyPart.setDataHandler(new DataHandler(source));
             messageBodyPart.setFileName("code");
             multipart.addBodyPart(messageBodyPart);
     
             // 发送完整消息
             message.setContent(multipart );
     
             //   发送消息
             Transport.send(message);
             System.out.println("Sent message successfully....");
          }catch (MessagingException mex) {
             mex.printStackTrace();
          }
    }
}

 

以上是关于java发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

Javascript - 使用 HTML 片段通过电子邮件发送 JSON 输出

用java写一个邮件发送代码

C#和ASP.NET通过Gmail账户发送邮件的代码

ThinkPHP中使用PHPMailer发送邮件

使用 Java 发送邮件

java代码如何发送一封带图片的邮件