使用javaMail发送复杂邮件,支持附件发送

来源:互联网 发布:淘宝优惠券免费领取 编辑:程序博客网 时间:2024/05/17 18:12

在javaMail中整个邮件是由一个一个的BodyPart组成的,每一个BoydPart的内容可以是简单的普通文本,或超文本,或是一个附件,也可以是复杂的一个Multipart,然后Multipart中又可以嵌套多个BodyPart和Multipart。

 

下面是使用javaMail构造一封复杂的邮件,并发送该邮件。

Java代码  收藏代码
  1. import java.io.File;  
  2. import java.util.Properties;  
  3.   
  4. import javax.activation.DataHandler;  
  5. import javax.activation.DataSource;  
  6. import javax.activation.FileDataSource;  
  7. import javax.mail.Address;  
  8. import javax.mail.Authenticator;  
  9. import javax.mail.BodyPart;  
  10. import javax.mail.Message;  
  11. import javax.mail.MessagingException;  
  12. import javax.mail.Multipart;  
  13. import javax.mail.PasswordAuthentication;  
  14. import javax.mail.Session;  
  15. import javax.mail.Transport;  
  16. import javax.mail.Message.RecipientType;  
  17. import javax.mail.internet.AddressException;  
  18. import javax.mail.internet.InternetAddress;  
  19. import javax.mail.internet.MimeBodyPart;  
  20. import javax.mail.internet.MimeMessage;  
  21. import javax.mail.internet.MimeMultipart;  
  22.   
  23. public class Email4 {  
  24.   
  25.     public static void main(String args[]) throws AddressException, MessagingException {  
  26.           
  27.         Properties props = new Properties();  
  28.         //发送邮件的服务器  
  29.         props.setProperty("mail.smtp.host""smtp.qq.com");  
  30.         //发送邮件的协议  
  31.         props.setProperty("mail.transport.protocol""smtp");  
  32.         //在连接服务器的时候是否需要验证,发邮件是需要验证的  
  33.         props.setProperty("mail.smtp.auth""true");  
  34.         //用户名  
  35.         final String username = "1111111111@qq.com";  
  36.         //密码  
  37.         final String password = "11111111111";  
  38.           
  39.         //利用上述的用户名和密码构造一个Authenticator对象,并把它给Session,  
  40.         //当需要进行验证的时候,会自动从Session中去取该Authenticator对象  
  41.         Authenticator authenticator = new Authenticator() {  
  42.   
  43.             @Override  
  44.             protected PasswordAuthentication getPasswordAuthentication() {  
  45.                 // TODO Auto-generated method stub  
  46.                 return new PasswordAuthentication(username, password);  
  47.             }  
  48.               
  49.         };  
  50.         //利用上述提供给系统的属性和Authenticator构造一个Session对象  
  51.         Session session = Session.getInstance(props, authenticator);  
  52.         //设为true,可以看到发送邮件的整个过程  
  53.         session.setDebug(true);  
  54.         //利用配好配置信息的Session新建一封邮件  
  55.         Message message = new MimeMessage(session);  
  56.         //设置邮件的发送者  
  57.         message.setFrom(new InternetAddress("111111111111@qq.com"));  
  58.         //邮件的主题  
  59.         message.setSubject("Sending Email Test!");  
  60.         Address[] recipients = InternetAddress.parse("*************@sohu.com");  
  61.         //收邮件的人,如果有抄送,密送的,可以类似的设置,只是把RecipientType改为相应的类型  
  62.         message.setRecipients(RecipientType.TO, recipients);  
  63.         BodyPart part1 = new MimeBodyPart();  
  64.         BodyPart part2 = new MimeBodyPart();  
  65.         BodyPart part3 = new MimeBodyPart();  
  66.         BodyPart part4 = new MimeBodyPart();  
  67.         BodyPart part5 = new MimeBodyPart();  
  68.         //设置内容为html  
  69.         part1.setContent("<div style='font-size:large;font-weight:bold;color:red;height:50px;border:1px solid blue;'>HELLO WORLD;你好,世界</div>""text/html;charset=utf-8");  
  70.         //设置内容为普通文本  
  71.         part2.setText("你好,Part2");  
  72.         //将一个bodyPart加到最前面  
  73.         part3.setText("Hello Part3");  
  74.           
  75.           
  76.         /** 
  77.          * 发送一个附件的情况 
  78.          */  
  79.         //设置附件  
  80.         //DataSource是对附件的封装,是一个接口,系统已经实现的子类有URLDataSource, DataHandlerDataSource, FileDataSource  
  81.         //里面封装了各种与附件有关的方法,包括获取附件的InputStream  
  82.         DataSource dataSource = new FileDataSource(new File("E:\\doc.sql"));  
  83.         //DataHandler是对DataSource的封装,可以把Stream转换为String,  
  84.         DataHandler dataHandler = new DataHandler(dataSource);  
  85.         part4.setDataHandler(dataHandler);  
  86.         //附件的名称,默认为content,如果文件名不加扩展名在进行附件下载的时候系统会不知道该附件是什么类型的附件,  
  87.         //这样在不清楚文件类型的情况下,文件有可能是打不开的  
  88.         part4.setFileName("doc.sql");  
  89.           
  90.         /** 
  91.          * 发送多个附件的情况 
  92.          */  
  93.         Multipart attachments = new MimeMultipart();  
  94.         BodyPart attach1 = new MimeBodyPart();  
  95.         //设置附件1的内容  
  96.         DataSource dataSource_attach1 = new FileDataSource(new File("E:\\doc.sql"));  
  97.         DataHandler dataHandler_attach1 = new DataHandler(dataSource_attach1);  
  98.         attach1.setDataHandler(dataHandler_attach1);  
  99.         attach1.setFileName("attach1_doc.sql");  
  100.         BodyPart attach2 = new MimeBodyPart();  
  101.         //设置附件2的内容  
  102.         DataSource dataSource_attach2 = new FileDataSource(new File("E:\\doc.sql"));  
  103.         DataHandler dataHandler_attach2 = new DataHandler(dataSource_attach2);  
  104.         attach2.setDataHandler(dataHandler_attach2);  
  105.         attach2.setFileName("attach2_doc.sql");  
  106.         attachments.addBodyPart(attach1);  
  107.         attachments.addBodyPart(attach2);  
  108.         part5.setContent(attachments);  
  109.           
  110.         Multipart multipart = new MimeMultipart();  
  111.         multipart.addBodyPart(part1);  
  112.         multipart.addBodyPart(part2);  
  113.         multipart.addBodyPart(part3,0);  
  114.         multipart.addBodyPart(part4);  
  115.         multipart.addBodyPart(part5);  
  116.         message.setContent(multipart);  
  117.         Transport.send(message);//发送  
  118.           
  119.     }  
  120.       
  121. }  
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 在部队报函授不发毕业证怎么办 济南自考信息修改后原成绩怎么办 自考本科档案一直在自己手里怎么办 想考警校可身高差两公分怎么办 没读完初中现在想继续夜大怎么办 美国签证确认页姓和名写错了怎么办 单位不承认非法辞退说我旷工怎么办 工作了和同事在一起住宿舍怎么办 教会的事情商量是起冲突怎么办 转转购买的产品是坏的怎么办 二年级的学生反应太迟钝怎么办? 特别胖的人运动一半体力不支怎么办 怀孕了在胸透门口站了很久怎么办 自己觉的色弱但高考体检正常怎么办 高考体检不合格怎么办会影响录取吗 老婆起诉我离婚我不想离怎么办 中考结束了成绩差的学生怎么办 我儿了眼角模不好了怎么办 打了2次催产针没反应怎么办 高中体检学生隐私被同学看到怎么办 要出去旅游刚好遇上月经期怎么办 兵检的时候还在高中怎么办 人流后带上环20天白带很黄怎么办 武警义务兵训练的时候没合格怎么办 小孩考试考的不好·家长怎么办 怀孕了不小心碰了屁股疼怎么办 新密职教中心开学军训有点慌怎么办 房产证是士兵证办的退伍后怎么办 士兵证办的银行卡退伍了怎么办 看左上牙后引发上颌窦炎怎么办 老板克扣进件加班工资应该怎么办 医生给婴儿按嘴巴碰到喉咙痛怎么办 事故逃逸人死对方要钱太多怎么办 毕业工作未满一年辞职档案怎么办 淘宝上买的东西客服不理怎么办 蚂蚁借呗还款后没显示还款怎么办 王者荣耀什么英雄都打的很烂怎么办 军校参加了政审体检误了怎么办 如果老板搬迁不给工人补偿怎么办 下面的毛很多又掉的厉害怎么办? 想去美国开饭店要怎么办签证