1. private Session session;
  2. private Transport transport;
  3. private String mailHost = "";
  4. private String sender_username = "";
  5. private String sender_password = "";
  6. private String contentPart_Type = "";
  7. private Properties properties = new Properties();
  8. /*
  9. * 初始化方法
  10. */
  11. public JavaMailWithAttachment() {
  12. try {
  13. FileInputStream is=new FileInputStream("E:/workspace1.6/ICRM-H5/src/mailServer.properties");
  14. properties.load(is);
  15. this.mailHost = properties.getProperty("mail.smtp.host");
  16. this.sender_username = properties.getProperty("mail.sender.username");
  17. this.sender_password = properties.getProperty("mail.sender.password");
  18. this.contentPart_Type = properties.getProperty("mail.contentPart.type");
  19. } catch (IOException e) {
  20. e.printStackTrace();
  21. }
  22. session = Session.getInstance(properties);
  23. session.setDebug(true); //开启后有调试信息,发布时关闭
  24. message = new MimeMessage(session);
  25. }
  26. /**
  27. * 发送邮件
  28. * @param subject
  29. *               邮件主题
  30. * @param sendHtml
  31. *               邮件内容
  32. * @param toUser
  33. *               收件人  多个时参数形式  :  "xxx@xxx.com,xxx@xxx.com,xxx@xxx.com"
  34. * @param ccUser
  35. *               抄送人   同上
  36. * @param bccUser
  37. *               密送人   同上
  38. * @param attachment
  39. *               附件
  40. */
  41. public void doSendHtmlEmail(String subject, String sendHtml,
  42. String  toUser, String ccUser, String bccUser, File [] attachment){
  43. try {
  44. // 发件人
  45. InternetAddress from = new InternetAddress(sender_username);
  46. message.setFrom(from);
  47. // 设置多个收件人地址
  48. if(null != toUser && !toUser.isEmpty()){
  49. @SuppressWarnings("static-access")
  50. InternetAddress[] internetAddressTo = new InternetAddress().parse(toUser);
  51. message.setRecipients(Message.RecipientType.TO, internetAddressTo);
  52. }
  53. // 设置多个抄送地址
  54. if(null != ccUser && !ccUser.isEmpty()){
  55. @SuppressWarnings("static-access")
  56. InternetAddress[] internetAddressCC = new InternetAddress().parse(ccUser);
  57. message.setRecipients(Message.RecipientType.CC, internetAddressCC);
  58. }
  59. // 设置多个密送地址
  60. if(null != bccUser && !bccUser.isEmpty()){
  61. @SuppressWarnings("static-access")
  62. InternetAddress[] internetAddressBCC = new InternetAddress().parse(bccUser);
  63. message.setRecipients(Message.RecipientType.BCC, internetAddressBCC);
  64. }
  65. // 发送日期
  66. message.setSentDate(new Date());
  67. // 邮件主题
  68. message.setSubject(subject);
  69. // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
  70. Multipart multipart = new MimeMultipart();
  71. // 添加邮件正文
  72. BodyPart contentPart = new MimeBodyPart();
  73. contentPart.setContent(sendHtml, contentPart_Type);
  74. multipart.addBodyPart(contentPart);
  75. BodyPart attachmentBodyPart = null;
  76. // 添加附件的内容
  77. if (null != attachment && attachment.length != 0) {
  78. for (File file : attachment) {
  79. attachmentBodyPart = new MimeBodyPart();
  80. DataSource source = new FileDataSource(file);
  81. attachmentBodyPart.setDataHandler(new DataHandler(source));
  82. //MimeUtility.encodeWord可以避免文件名乱码
  83. attachmentBodyPart.setFileName(MimeUtility.encodeWord(file.getName()));
  84. multipart.addBodyPart(attachmentBodyPart);
  85. }
  86. }
  87. // 将multipart对象放到message中
  88. message.setContent(multipart);
  89. // 保存邮件
  90. message.saveChanges();
  91. // smtp验证
  92. transport = session.getTransport("smtp");
  93. transport.connect(mailHost, sender_username, sender_password);
  94. // 发送
  95. transport.sendMessage(message, message.getAllRecipients());
  96. System.out.println("发送成功!");
  97. } catch (Exception e) {
  98. e.printStackTrace();
  99. } finally {
  100. if (transport != null) {
  101. try {
  102. transport.close();
  103. } catch (MessagingException e) {
  104. e.printStackTrace();
  105. }
  106. }
  107. }
  108. }

javaMail邮件发送功能(多收件人,多抄送人,多密送人,多附件)的更多相关文章

  1. javaMail 邮件发送和接收示例,支持正文图片、html、附件(转)

    转自:https://blog.csdn.net/star_fly4/article/details/52037587 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文 ...

  2. spring-boot-route(二十二)实现邮件发送功能

    在项目开发中,除了需要短信验证外,有时候为了节省 短信费也会使用邮件发送.在Spring项目中发送邮件需要封装复杂的消息体,不太方便.而在Spring Boot项目中发送邮件就太简单了,下面一起来看看 ...

  3. .NET开发邮件发送功能的全面教程(含邮件组件源码)

    今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         ...

  4. .NET开发邮件发送功能

    .NET开发邮件发送功能 今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知 ...

  5. 用ASP.NET Core 1.0中实现邮件发送功能-阿里云邮件推送篇

    在上篇中用MailKit实现了Asp.net core 邮件发送功能,但一直未解决阿里云邮件推送问题,提交工单一开始的回复不尽如人意,比如您的网络问题,您的用户名密码不正确等,但继续沟通下阿里云客户还 ...

  6. redmine邮件发送功能配置详解

    redmine的邮件发送功能还是很有用的.像项目有更新啦,任务分配啦,都能邮件发送的相关责任人.我自己在linux服务器上安装并启动了redmine后,邮件一直发送了不了.查了网上的资料,都是讲修改下 ...

  7. shell邮件发送功能实现

    本文中以163邮箱为例,测试shell邮件发送功能.常见的工具有:mailx.sendmail.mutt等. 1.设置邮件客户端 (1)启用pop3.smtp服务,以支持第三方客户端支持 (2)设置授 ...

  8. SpringBoot 2.X从0到1实现邮件发送功能

    Spring中提供了JavaMailSender接口实现邮件发送功能,在SpringBoot2.X中也封装了发送邮件相关的Starter并且提供了自动化配置. 本文目录 一.添加对应的Starter二 ...

  9. System.Net邮件发送功能踩过的坑

    System.Net邮件发送功能踩过的坑 目录 System.Net邮件发送功能踩过的坑 1.EazyEmail邮件发送类库 2.邮件发送授权码与邮件密码 3.通过邮件密码来发送邮件 4.Wiresh ...

随机推荐

  1. JavaScript 使用闭包防止变量污染

    javaScript在多人协作时,如果定义过多的全局变量 有可能造成全局变量命名冲突,使用闭包来解决功能对变量的调用 将变量写到一个独立的空间里面 就是闭包里面 var name = "外部 ...

  2. R+NLP︱text2vec包——四类文本挖掘相似性指标 RWMD、cosine、Jaccard 、Euclidean (三,相似距离)

    要学的东西太多,无笔记不能学~~ 欢迎关注公众号,一起分享学习笔记,记录每一颗"贝壳"~ --------------------------- 在之前的开篇提到了text2vec ...

  3. calendar中set方法和静态属性带来的坑

    坑在哪里: 在我之前接触的一个项目中涉及到这么一项功能:每天00:00:00把某些数据移动到mongodb数据库的另一个集合中,也就是关系型数据库的表中.这个集合名是一个固定的名称加上当前的两个月前的 ...

  4. 基于am3358的led跑马灯测试

    #include <sys/ioctl.h> #include<stdio.h> #include <fcntl.h> #include <sys/types ...

  5. java重写和重载

    方法的重载: 在一个类中的两个或两个以上的方法,他们方法名相同但是参数列表不同,这种方式称为方法的重载,方法的重载是实现多态性的方式之一. 参数列表不同指的是参数的个数不同或相同的个数但顺序不同或者类 ...

  6. Ajax前后台交互函数

    function AJAX(obj){ //做网络请求的时候参数以对象的形式传递进来 //我们规定obj里面包含属性:url, //请求方式type, //date前端给后端传递的参数 //回调函数s ...

  7. docker学习系列(一):docker 基础

    一.简介 开发当中比较麻烦的问题在于软件配置,每个人的机械以及系统都不尽相同,程序需要运行在系统当中需要配置好相应的系统以及各种依赖的组件,但是很多时候由于各种软件依赖包的版本,系统兼容性问题会导致程 ...

  8. BZOJ 2683: 简单题(CDQ分治 + 树状数组)

    BZOJ2683: 简单题(CDQ分治 + 树状数组) 题意: 你有一个\(N*N\)的棋盘,每个格子内有一个整数,初始时的时候全部为\(0\),现在需要维护两种操作: 命令 参数限制 内容 \(1\ ...

  9. 【BZOJ4552】排序(线段树,二分答案)

    [BZOJ4552]排序(线段树,二分答案) 题面 BZOJ 题解 好神的题啊 直接排序我们做不到 怎么维护? 考虑一下,如果我们随便假设一个答案 怎么检验它是否成立? 把这个数设成\(1\),其他的 ...

  10. 【BZOJ1500】【NOI2005】维修数列(Splay)

    [BZOJ1500][NOI2005]维修数列(Splay) 题面 不想再看见这种毒瘤题,自己去BZOJ看 题解 Splay良心模板题 真的很简单 我一言不发 #include<iostream ...