zoukankan      html  css  js  c++  java
  • JavaMail邮件开发

    一、只带有纯文本的邮件

      代码事例如下:

    package com.lyh.sendemail;
    
    import java.util.Properties;
    
    import javax.mail.Message;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    
    //发送邮件
    public class MessageDemo1 {
    
        public static void main(String[] args) throws Exception{
            Properties props = new Properties();//key value:配置参数。真正发送邮件时再配置
            props.setProperty("mail.transport.protocol", "smtp");//指定邮件发送的协议,参数是规范规定的
            props.setProperty("mail.host", "smtp.163.com");//指定发件服务器的地址,参数是规范规定的
    //        props.setProperty("mail.debug", "true");//邮件发送的调试模式,参数是规范规定的
            props.setProperty("mail.smtp.auth", "true");//请求服务器进行身份认证。参数与具体的JavaMail实现有关
            
            Session session = Session.getInstance(props);//发送邮件时使用的环境配置
            session.setDebug(true);
            MimeMessage message = new MimeMessage(session);
            
            //设置邮件的头
            message.setFrom(new InternetAddress("xxx@163.com"));
            message.setRecipients(Message.RecipientType.TO, "xxx@qq.com");
            message.setSubject("This is second message");
            //设置正文
            message.setContent("<h1>hello</h1>", "text/html");
    //        message.setText("<h1>hello</h1>");//纯文本
            
            message.saveChanges();
            
            //发送邮件
            Transport ts = session.getTransport();
            ts.connect("xxx@163.com", "123456");       // 密码为授权码不是邮箱的登录密码
            ts.sendMessage(message, message.getAllRecipients());//对象,用实例方法}
        }
    }
    

      二、带有图片的邮件

      a、复杂邮件封装模型

        

    代码事例

    package com.lyh.sendemail;
    
    import java.util.Properties;
    
    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.Message;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    
    //发送邮件
    public class MessageDemo2 {
    
        public static void main(String[] args) throws Exception{
            Properties props = new Properties();//key value:配置参数。真正发送邮件时再配置
            
            props.setProperty("mail.transport.protocol", "smtp");//指定邮件发送的协议,参数是规范规定的
            props.setProperty("mail.host", "smtp.163.com");//指定发件服务器的地址,参数是规范规定的
    //        props.setProperty("mail.debug", "true");//邮件发送的调试模式,参数是规范规定的
            props.setProperty("mail.smtp.auth", "true");//请求服务器进行身份认证。参数与具体的JavaMail实现有关
            
            Session session = Session.getInstance(props);//发送邮件时使用的环境配置
            session.setDebug(true);
            MimeMessage message = new MimeMessage(session);
            
            //设置邮件的头
            message.setFrom(new InternetAddress("xxx@163.com"));
            message.setRecipients(Message.RecipientType.TO, "xxx@qq.com");
            message.setSubject("This is second message");
            //设置正文
            
            //搞出文本部分
            MimeBodyPart textPart = new MimeBodyPart();
            textPart.setContent("aaa<img src='cid:mm'/>aaa", "text/html");
            
            //搞图片部分
            MimeBodyPart imagePart = new MimeBodyPart();
            imagePart.setContentID("mm");
            //把磁盘上的文件加到part中使用到了JAF框架
            DataHandler dh = new DataHandler(new FileDataSource("src/0.jpg"));
            imagePart.setDataHandler(dh);
            
            MimeMultipart mp = new MimeMultipart();
            mp.addBodyPart(textPart);
            mp.addBodyPart(imagePart);
            mp.setSubType("related");//有关系的
            
            message.setContent(mp);
            message.saveChanges();
            
            //发送邮件
            Transport ts = session.getTransport();
            ts.connect("xxx@163.com", "123456"); //密码为授权码不是邮箱的登录密码
            ts.sendMessage(message, message.getAllRecipients());//对象,用实例方法
        }
    }
    

      

    三、带有文本、图片、附件的邮件

      代码事例:

    package com.lyh.sendemail;
    
    import java.util.Properties;
    
    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.Message;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    import javax.mail.internet.MimeUtility;
    
    //发送邮件
    public class MessageDemo3 {
    
        public static void main(String[] args) throws Exception{
    
            Properties props = new Properties();//key value:配置参数。真正发送邮件时再配置
            
            props.setProperty("mail.transport.protocol", "smtp");//指定邮件发送的协议,参数是规范规定的
            props.setProperty("mail.host", "smtp.163.com");//指定发件服务器的地址,参数是规范规定的
    //        props.setProperty("mail.debug", "true");//邮件发送的调试模式,参数是规范规定的
            props.setProperty("mail.smtp.auth", "true");//请求服务器进行身份认证。参数与具体的JavaMail实现有关
            
            Session session = Session.getInstance(props);//发送邮件时使用的环境配置
    //        session.setDebug(true);
            MimeMessage message = new MimeMessage(session);
            
            //设置邮件的头
            message.setFrom(new InternetAddress("xxx@163.com"));
            message.setRecipients(Message.RecipientType.TO, "xxxqq.com");
            message.setSubject("这是一封复杂的邮件");
            //设置正文
            
            //搞出文本部分
            MimeBodyPart textPart = new MimeBodyPart();
            textPart.setContent("美女<img src='cid:mm'/>aaa", "text/html;charset=UTF-8");
            
            //搞图片部分
            MimeBodyPart imagePart = new MimeBodyPart();
            imagePart.setContentID("mm");
            //把磁盘上的文件加到part中使用到了JAF框架
            DataHandler dh = new DataHandler(new FileDataSource("src/0.jpg"));
            imagePart.setDataHandler(dh);
            
            MimeMultipart mp = new MimeMultipart();
            mp.addBodyPart(textPart);
            mp.addBodyPart(imagePart);
            mp.setSubType("related");//有关系的
            
            MimeBodyPart textImagePart = new MimeBodyPart();    //将 MimeMultipart 添加到 MimeBodyPart实现附件的发送
            textImagePart.setContent(mp);
            
            //创建附件部分
            MimeBodyPart attachmentPart = new MimeBodyPart();
            dh = new DataHandler(new FileDataSource("src/账户.rar"));
            String filename = dh.getName();
            attachmentPart.setDataHandler(dh);
            
            //手工设置文件名  防止乱码使用  javaMail里的 MimeUtility进行编码
            attachmentPart.setFileName(MimeUtility.encodeText(filename)); 
            
            //最终的 MimeMultipart
            MimeMultipart finalMp = new MimeMultipart();
            finalMp.addBodyPart(attachmentPart);
            finalMp.addBodyPart(textImagePart);
            
            finalMp.setSubType("mixed");
            
            message.setContent(finalMp);
            message.saveChanges();
            
            //发送邮件
            Transport ts = session.getTransport();
            ts.connect("xxx@163.com", "123456"); //密码为授权码不是邮箱的登录密码
            ts.sendMessage(message, message.getAllRecipients());//对象,用实例方法
        
        }
    }
    

      

  • 相关阅读:
    k8s命令
    git绿色、红色图标不显示的问题
    Git下载
    文档(PDF Word Excel PPT)转HTML前端预览方案
    腾讯云生成临时访问链接
    cron表达式的双重人格:星期和数字到底如何对应?
    Windows下nginx报错解决:CreateFile() "xxx/logs/nginx.pid" failed
    Windows命令行在任意位置启动和退出nginx
    解决博客园TinyMCE模式下内置插入代码块功能不支持Go语言的问题(两个并不完美的解决方案)
    linux系统调用system()函数详解
  • 原文地址:https://www.cnblogs.com/wqsbk/p/5969787.html
Copyright © 2011-2022 走看看