zoukankan      html  css  js  c++  java
  • 发送邮件 (二)

    
    import com.sun.mail.util.MailSSLSocketFactory;
    
    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.*;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    import java.util.Properties;
    
    //发送简单的邮件
    public class MailDemo02 {
        public static void main(String[] args) throws Exception {
            Properties prop = new Properties();
            prop.setProperty("mail.host","smtp.qq.com");//设置QQ有机胺服务器
            prop.setProperty("mail.transport.protocol","smtp");//右键发送协议
            prop.setProperty("mail.smtp","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发送邮件的5个步骤
            //1.创建定义整个应用程序所需要的环境信息的session对象
    
            //QQ才需要其他的不需要
            Session session = Session.getDefaultInstance(prop, new Authenticator() {
                public PasswordAuthentication getPasswordAuthentication(){
                    //发件人邮件用户名,授权码
                    return  new  PasswordAuthentication("xxxx@qq.com","授权");
                }
            });
            //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
            session.setDebug(true);
            //2.通过session得到transport对象
            Transport ts = session.getTransport();
            //3.使用邮箱的用户名和授权码连接服务器
            ts.connect("smtp.qq.com","xxx@qq.com","授权码");
            //4.创建邮件:写邮件
            //注意传递session
            MimeMessage message=new MimeMessage(session);
            //指名邮件发件人
            message.setFrom(new InternetAddress("xxxx@qq.com"));
            //指名有邮件的收件人
            message.setRecipient(Message.RecipientType.TO,new InternetAddress("1669945823@qq.com"));
            //邮件的标题
            message.setSubject("纯文本的简单邮件");
           //========================================================
           //准备图片数据
            MimeBodyPart image = new MimeBodyPart();
            //图片需要金国数据处理.. DataHandler:数据处理
            DataHandler dh = new DataHandler(new FileDataSource("D:\Study\JAVA\mail-java\src\bz.jpg"));
            image.setDataHandler(dh);//在我们的body中放入这个处理的图片数据
            image.setContentID("bz.jpg");//给图片设置id,在后面我们可以使用
    
            //准备正文数据
            MimeBodyPart text = new MimeBodyPart();
            text.setContent("这是一封带图片<img src='cid:bz.jpg'>的邮件","text/html;charset=UTF-8");
    
            //描述数据关系
            MimeMultipart mm = new MimeMultipart();
            mm.addBodyPart(text);
            mm.addBodyPart(image);
            mm.setSubType("related");
    
            //设置保存到消息中,保存修改
            message.setContent(mm);//把最后编辑好的邮件放到数据中
            message.saveChanges();//保存修改
            //========================================================
            //5.发送邮件
            ts.sendMessage(message,message.getAllRecipients());
            //6.关闭连接
            ts.close();
    
        }
    }
    每个人都是在努力的路上,别因为别人的误解而放弃,,术业有专攻,如是而已。
  • 相关阅读:
    ssl
    [原创] Docker 安装 Lnmp 环境
    Oracle 的DBNEWID (NID)实用程序
    使用 convert database 命令进行 RMAN 跨平台迁移 (同版本)
    hbase2强制删除表
    zookeeper删除目录节点报错:Authentication is not valid : /hbase/tokenauth
    hbase1向hbase2表迁移
    /etc/sysconf/networkscripts/ifcfgeth0的手册到底在哪里
    Mycat新增数据报错can't fetch sequnce in db,sequnce
    从GitHub远程仓库中删除文件夹或文件
  • 原文地址:https://www.cnblogs.com/16699qq/p/13149492.html
Copyright © 2011-2022 走看看