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. angularjs1.6.4中使用ng-table出现data.slice is not a function的问题

    这个问题困扰了我2个小时. 项目中angularjs的版本从1.4.8升级到1.6.4,升级完成之后,发现ng-table不能用了.主要报错信息是ng-table中data.slice is not ...

  2. 帮Python找“对象”

    引言:你一定会感叹:Python还缺找对象? 毕竟"一切皆对象"是人家Python的哲学理念.不过,Python  允许程序员以纯粹的面向过程的方式来使用它,所以人们有时会忽视它那 ...

  3. FusionCharts ScrollColumn2D图

    FusionCharts ScrollColumn2D图 1.JSP页面 ScrollColumn2D.jsp: <%@ page language="java" conte ...

  4. MiniGUI + Hi3531 笔记 .

    一.移动光驱安装Ubuntu 10.04 1.   重启系统按住Delete进入BIOS界面! 2.   退出/高级模式 --> 启动 --> 启动设备选择. 移动光驱正常被识别后这里应该 ...

  5. 手机端仿ios的三级联动脚本四

    二,脚本 <script> $("#city-picker").cityPicker({ title: "选择省市区/县", onChange: f ...

  6. monkeyrunner_控件坐标获取

    1.Pointer location获取坐标 通过模拟器中的设置-开发者选项,找到"指针位置"的选项,勾选上.如下图所示. 勾选后,模拟器的最顶部则显示坐标,比如点击模拟器上的任一 ...

  7. ontimer 与多线程

    一般来说,在MFC中开启一个UI线程可以用以下代码: m_pCameraThread = AfxBeginThread(RUNTIME_CLASS(CCameraThread)); if (!m_pC ...

  8. 【视频编解码·学习笔记】11. 提取SPS信息程序

    一.准备工作: 回到之前SimpleH264Analyzer程序,找到SPS信息,并对其做解析 调整项目目录结构: 修改Global.h文件中代码,添加新数据类型UINT16,之前编写的工程中,UIN ...

  9. 第九篇:随机森林(Random Forest)

    前言 随机森林非常像<机器学习实践>里面提到过的那个AdaBoost算法,但区别在于它没有迭代,还有就是森林里的树长度不限制. 因为它是没有迭代过程的,不像AdaBoost那样需要迭代,不 ...

  10. 第二篇:数据可视化 - 基本API

    前言 数据可视化是数据挖掘非常重要的一个环节,它不单在查阅了解数据环节使用到,在整个数据挖掘的流程中都会使用到. 因为数据可视化不单可以形象地展示数据,让你对数据有更好的总体上的了解,而且还可以让你清 ...