zoukankan      html  css  js  c++  java
  • 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);
            }
        }
    
    }
  • 相关阅读:
    使用ServiceStackRedis链接Redis简介
    浅谈SQL SERVER中事务的ACID
    Sql Server查询性能优化之走出索引的误区
    Redis命令总结
    TSQL查询进阶—理解SQL Server中的锁
    SQL Server 2005 分区表实践——分区切换
    SQL Server Profiler 模板
    深入浅出SQL Server中的死锁
    不同的单元中的类可以共用同一个命名空间
    从硬盘上装xp手记(2005.8.14 )
  • 原文地址:https://www.cnblogs.com/qhqi/p/14164464.html
Copyright © 2011-2022 走看看