java代码中实现邮件的发送

2016-06-14 / 9 阅读 / Java

用java代码实现发送邮件,需要用到一个mail.jar包
oracle官网下载地址

想想使用客户端发送步骤

-->打开客户端(设置登录账户)
-->新建邮件(设置接收地址)
-->发送

其实用代码实现与以上方式基本差不多

-->初始化虚拟客户端(设置登录账户)
-->新建邮件对象(设置接收地址,发送地址)
-->发送

下面一个完整的发送例子


import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

public class MailTest {
    public static void main(String[] args) throws Exception {
        //基本参数
        Properties prop = new Properties();
        prop.put("mail.smtp.host","smtp.qq.com");
        prop.put("mail.smtp.auth","true");
        prop.put("mail.smtp.starttls.enable","true");

        //通过基本参数和登录账号构建一个虚拟的客户端(我是这样想的)
        //Auth类是用来验证邮箱的切需要继承并重写Authenticator(和发送账号一致)
        Session session = Session.getDefaultInstance(prop, new Auth("295490665@qq.com", "***********"));
        Transport smtp = session.getTransport("smtp");

        //这边构建邮件体(设置发送地址和收件地址可以是多个)
        MimeMessage mes = new MimeMessage(session);
        InternetAddress from = new InternetAddress("295490665@qq.com");
        mes.setFrom(from);
        //收件方
        InternetAddress to = new InternetAddress("wangbingit@outlook.com");
        mes.setRecipient(Message.RecipientType.TO,to);
        //设置具体内容了
        mes.setSubject("Test");
        mes.setContent("TestContent","text/html");

        //以上2处设置好后,就可以连接发送关闭连接
        smtp.connect();
        smtp.sendMessage(mes,mes.getRecipients(Message.RecipientType.TO));
        smtp.close();
    }
}
/**
* 验证
*/
class Auth extends Authenticator {

    private String userName;
    private String password;

    public Auth(String userName, String password) {
        this.userName = userName;
        this.password = password;
    }

    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(userName,password);
    }
}
相关推荐