发送邮件

public class SendEmail  extends Thread{
    private User user;

    public SendEmail(User user) {
        this.user=user;
    }
    //发送人邮箱;
    private String fromEamil="发送人@qq.com";
    //发送人授权码;
    private String code="授权码";
    @Override
    public void run() {
        try {
            Properties properties = new Properties();
            //设置qq邮件服务器;
            properties.setProperty("mail.host", "smtp.qq.com");
            //邮件发送协议;
            properties.setProperty("mail.transport.protocol", "smtp");
            //需要验证用户名与密码;
            properties.setProperty("mail.smtp.auth", "true");

            //QQ邮箱的SSL加密;
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            properties.put("mail.smtp.ssl.enable", "true");
            properties.put("mail.smtp.ssl.socketFactory", sf);

            //使用JavaMail发送邮件;
            //1.首先创建整个应用程序的全局session对象;(启动==>session销毁结束)
            //QQ的独特创建方式;===>
            Session session = Session.getDefaultInstance(properties, new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    //userName:用户名 password:授权码
                    return new PasswordAuthentication(fromEamil, code);
                }
            });

            //开启session的debug模式;
            session.setDebug(true);
            //2.session==>获取Transport对象
            Transport ts = session.getTransport();
            //3.使用邮箱的授权码,用户名,连接邮件的服务器;
            ts.connect("smtp.qq.com", fromEamil, code);

            //4.创建邮件; 需要传递session;
            MimeMessage message = new MimeMessage(session);
            //需要指明邮件的发送人;
            message.setFrom(new InternetAddress(fromEamil));
            //指明收件人==>
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(user.getEmail()));
            //邮件标题;
            message.setSubject("XX注册提示邮件", "utf-8");
            //文本内容;
            message.setContent("用户"+ user.getName()+",您的密码为"+user.getPassword(),
                    "text/html;charset=UTF-8");
            //5.发送邮件; 需要指明发送的地址;
            ts.sendMessage(message, message.getAllRecipients());
            //6.关闭;
            ts.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

  

posted @ 2022-03-25 22:28  每天--自然醒  阅读(41)  评论(0)    收藏  举报