java,qq邮箱发邮件工具类(需要部分修改)

package com.iflytek.utils;


import com.sun.mail.util.MailSSLSocketFactory;

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

//异步处理,多线程实现用户体验
public class Sendmail extends Thread{
    //用于给用户发送邮件的邮箱
    private  String from="379831039@qq.com";
    //邮箱的用户名
    private String username="379831039@qq.com";
    //邮箱的密码
    private String password="";
    //发送邮件的服务器地址
    private String host="smtp.qq.com";

    private String whoEmail;
    private String context;
    private String title;
    public Sendmail(String whoEmail,String context,String title){
        this.whoEmail=whoEmail;
        this.context=context;
        this.title=title;
    }

    //重写run方法的实现,再run方法中发送邮件给指定用户
    @Override
    public void run() {
        try {
            Properties prop = new Properties();
            prop.setProperty("mail.host",host);//设置qq邮件服务器
            prop.setProperty("mail.transport.protocol","smtp");//邮件发送协议
            prop.setProperty("mail.smtp.auth","true");//需要验证用户名密码

            //关于QQ邮箱,还要设置SSL加密
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            prop.put("mail.smtp.ssl.enable","true");
            prop.put("mail.smtp.ssl.socketFactory",sf);


            //使用JavaMail发送邮件的六个步骤
            //1.创建定义整个应用程序所需要的环境信息的Session对象
            //QQ独有
            Session session=Session.getDefaultInstance(prop, new Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username,password);
                }
            });

            //开启Session的Debug模式,可以看到程序发送Email的运行状态
            session.setDebug(true);

            //2.通过Session对象获取transport对象
            Transport ts = session.getTransport();

            //3.使用邮箱的用户名和授权码连上邮件服务器
            ts.connect(host,username,password);

            //4.创建邮件
            //创建邮件对象
            MimeMessage message = new MimeMessage(session);
            //指定邮件的发件人
            message.setFrom(new InternetAddress(from));//发件人
            //指明邮件的收件人 2967603994@qq.com
            message.setRecipient(Message.RecipientType.TO,new InternetAddress(whoEmail));//收件人
            //邮件的标题
            message.setSubject(title);//邮件的标题
            message.setContent(context,"text/html;charset=UTF-8");
            message.saveChanges();
            //5.发送邮件
            ts.sendMessage(message,message.getAllRecipients());

            //6.关闭连接
            ts.close();
        }catch (Exception e){
            throw new RuntimeException(e);
        }
    }

}
posted @ 2020-12-20 18:36  钱蒋蒋i  阅读(128)  评论(0编辑  收藏  举报