1. 关键技术:
  2. 1MimeMessagesetRecipients方法设置邮件的收件人,其中Message.RecipientType.TO常量表示收件人类型是邮件接收者,Message.RecipientType.
    CC常量表示收件人类型是抄送者,Message.RecipientType.BCC常量表示收件人的类型是密送着。
  3. 2、在调用MimeMessagesetRecipients方法时,除了可以指定收件人的类型外,还可以传入一个数组,指定多个收件人的地址。
  4. SourceCode:
  5.  
  6. import javax.mail.Address;
  7. import javax.mail.BodyPart;
  8. import javax.mail.Message;
  9. import javax.mail.MessagingException;
  10. import javax.mail.Multipart;
  11. import javax.mail.Session;
  12. import javax.mail.Transport;
  13. import javax.mail.internet.InternetAddress;
  14. import javax.mail.internet.MimeBodyPart;
  15. import javax.mail.internet.MimeMessage;
  16. import javax.mail.internet.MimeMultipart;
  17.  
  18. public class MultiMailsender {
  19.  
  20. /**
  21. * 发送邮件给多个接收者
  22. * @param mailInfo 带发送邮件的信息
  23. * @return
  24. */
  25. public static boolean sendMailtoMultiReceiver(MultiMailSenderInfo mailInfo){
  26. MyAuthenticator authenticator = null;
  27. if (mailInfo.isValidate()) {
  28. authenticator = new MyAuthenticator(mailInfo.getUserName(),
  29. mailInfo.getPassword());
  30. }
  31. Session sendMailSession = Session.getInstance(mailInfo
  32. .getProperties(), authenticator);
  33. try {
  34. Message mailMessage = new MimeMessage(sendMailSession);
  35. // 创建邮件发送者地址
  36. Address from = new InternetAddress(mailInfo.getFromAddress());
  37. mailMessage.setFrom(from);
  38. // 创建邮件的接收者地址,并设置到邮件消息中
  39. Address[] tos = null;
  40. String[] receivers = mailInfo.getReceivers();
  41. if (receivers != null){
  42. // 为每个邮件接收者创建一个地址
  43. tos = new InternetAddress[receivers.length + 1];
  44. tos[0] = new InternetAddress(mailInfo.getToAddress());
  45. for (int i=0; i<receivers.length; i++){
  46. tos[i+1] = new InternetAddress(receivers[i]);
  47. }
  48. } else {
  49. tos = new InternetAddress[1];
  50. tos[0] = new InternetAddress(mailInfo.getToAddress());
  51. }
  52. // 将所有接收者地址都添加到邮件接收者属性中
  53. mailMessage.setRecipients(Message.RecipientType.TO, tos);
  54.  
  55. mailMessage.setSubject(mailInfo.getSubject());
  56. mailMessage.setSentDate(new Date());
  57. // 设置邮件内容
  58. Multipart mainPart = new MimeMultipart();
  59. BodyPart html = new MimeBodyPart();
  60. html.setContent(mailInfo.getContent(), "text/html; charset=GBK");
  61. mainPart.addBodyPart(html);
  62. mailMessage.setContent(mainPart);
  63. // 发送邮件
  64. Transport.send(mailMessage);
  65. return true;
  66. } catch (MessagingException ex) {
  67. ex.printStackTrace();
  68. }
  69. return false;
  70. }
  71.  
  72. /**
  73. * 发送带抄送的邮件
  74. * @param mailInfo 待发送邮件的消息
  75. * @return
  76. */
  77. public static boolean sendMailtoMultiCC(MultiMailSenderInfo mailInfo){
  78. MyAuthenticator authenticator = null;
  79. if (mailInfo.isValidate()) {
  80. authenticator = new MyAuthenticator(mailInfo.getUserName(),
  81. mailInfo.getPassword());
  82. }
  83. Session sendMailSession = Session.getInstance(mailInfo
  84. .getProperties(), authenticator);
  85. try {
  86. Message mailMessage = new MimeMessage(sendMailSession);
  87. // 创建邮件发送者地址
  88. Address from = new InternetAddress(mailInfo.getFromAddress());
  89. mailMessage.setFrom(from);
  90. // 创建邮件的接收者地址,并设置到邮件消息中
  91. Address to = new InternetAddress(mailInfo.getToAddress());
  92. mailMessage.setRecipient(Message.RecipientType.TO, to);
  93.  
  94. // 获取抄送者信息
  95. String[] ccs = mailInfo.getCcs();
  96. if (ccs != null){
  97. // 为每个邮件接收者创建一个地址
  98. Address[] ccAdresses = new InternetAddress[ccs.length];
  99. for (int i=0; i<ccs.length; i++){
  100. ccAdresses[i] = new InternetAddress(ccs[i]);
  101. }
  102. // 将抄送者信息设置到邮件信息中,注意类型为Message.RecipientType.CC
  103. mailMessage.setRecipients(Message.RecipientType.CC, ccAdresses);
  104. }
  105.  
  106. mailMessage.setSubject(mailInfo.getSubject());
  107. mailMessage.setSentDate(new Date());
  108. // 设置邮件内容
  109. Multipart mainPart = new MimeMultipart();
  110. BodyPart html = new MimeBodyPart();
  111. html.setContent(mailInfo.getContent(), "text/html; charset=GBK");
  112. mainPart.addBodyPart(html);
  113. mailMessage.setContent(mainPart);
  114. // 发送邮件
  115. Transport.send(mailMessage);
  116. return true;
  117. } catch (MessagingException ex) {
  118. ex.printStackTrace();
  119. }
  120. return false;
  121. }
  122.  
  123. public static void main(String[] args) {
  124. // 创建邮件信息
  125. MultiMailSenderInfo mailInfo = new MultiMailSenderInfo();
  126. mailInfo.setMailServerHost("smtp.sina.com.cn");
  127. mailInfo.setMailServerPort("25");
  128. mailInfo.setValidate(true);
  129. mailInfo.setUserName("***");
  130. mailInfo.setPassword("***");
  131. mailInfo.setFromAddress("***@sina.com");
  132. mailInfo.setToAddress("***@163.com");
  133. mailInfo.setSubject("MyMail测试");
  134. mailInfo.setContent("我的邮件测试/n/rMy test mail/n/r");
  135.  
  136. String[] receivers = new String[]{"***@163.com", "***@tom.com"};
  137. String[] ccs = receivers;
  138. mailInfo.setReceivers(receivers);
  139. mailInfo.setCcs(ccs);
  140.  
  141. MultiMailsender.sendMailtoMultiReceiver(mailInfo);
  142. MultiMailsender.sendMailtoMultiCC(mailInfo);
  143. }
  144.  
  145. /**
  146. * 发送多接收者类型邮件的基本信息
  147. */
  148. public static class MultiMailSenderInfo extends MailSenderInfo{
  149. // 邮件的接收者,可以有多个
  150. private String[] receivers;
  151. // 邮件的抄送者,可以有多个
  152. private String[] ccs;
  153.  
  154. public String[] getCcs() {
  155. return ccs;
  156. }
  157. public void setCcs(String[] ccs) {
  158. this.ccs = ccs;
  159. }
  160. public String[] getReceivers() {
  161. return receivers;
  162. }
  163. public void setReceivers(String[] receivers) {
  164. this.receivers = receivers;
  165. }
  166. }
  167. }

java 给多人发送、抄送的更多相关文章

  1. JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架)

    JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架) 本来想实现 QQ 登录,有域名一直没用过,还得备案,好麻烦,只能过几天再更新啦. 先把实现的发送邮箱验证码更能更新了. 老规矩,更多内容在注释 ...

  2. Java 实现邮件的发送

                                             Java 实现邮件的发送 开发邮箱发送功能必须看邮箱方面的资料 改一些东西  (我的是qq 邮箱哟   开通 POP3 ...

  3. Android Java使用JavaMail API发送和接收邮件的代码示例

    JavaMail是Oracle甲骨文开发的Java邮件类API,支持多种邮件协议,这里我们就来看一下Java使用JavaMail API发送和接收邮件的代码示例 使用Javamail发送邮件,必需的j ...

  4. Java实现QQ邮件发送

    首先我们需要两个jar包,点击下面即可下载这两个包: JavaMail mail.jar 1.4.5 JAF(版本 1.1.1) activation.jar 我们这里采用QQ邮箱发送邮件为例,代码如 ...

  5. System.Net.Mail邮件发送抄送附件(多个)

    /// <summary> /// 邮件发送抄送附件 /// </summary> /// <param name="mailTo">收件人(可 ...

  6. 谈谈Java利用原始HttpURLConnection发送POST数据

    这篇文章主要给大家介绍java利用原始httpUrlConnection发送post数据,设计到httpUrlConnection类的相关知识,感兴趣的朋友跟着小编一起学习吧 URLConnectio ...

  7. 利用java实现的一个发送手机短信的小例子

    今天闲来无事,在微博上看到一个关于用java实现的一个发送手机短信的程序,看了看,写的不太相信,闲的没事,把他整理下来,以后可能用得着 JAVA发送手机短信,流传有几种方法:(1)使用webservi ...

  8. 转:Java开发牛人十大必备网站

    原文来自于:http://www.importnew.com/7980.html 以下是我收集的Java开发牛人必备的网站.这些网站可以提供信息,以及一些很棒的讲座, 还能解答一般问题.面试问题等.质 ...

  9. Java开发牛人十大必备网站

    以下是我收集的Java开发牛人必备的网站.这些网站可以提供信息,以及一些很棒的讲座, 还能解答一般问题.面试问题等.质量是衡量一个网站的关键因素,我个人认为这些网站质量都很好.接下来,我会跟大家分享我 ...

随机推荐

  1. ios 地图,系统升级为12后,进入地图,大头针全部默认展开问题,以及在选择不同距离的情况下,如何刷新地图的区域范围

    1.第一个问题,大头针在ios12,默认展开问题,需要设置大头针视图的默认选中属性为NO - (MKAnnotationView *)mapView:(MKMapView *)mapView view ...

  2. Java IO 学习(四)BIO/NIO

    本文会尝试介绍Java中BIO与NIO的范例与原理 使用的模型非常简单:服务器--客户端模型,服务器会将客户端发送的字符串原样发回来.也就是所谓的echo server. BIO 也就是所谓的Sock ...

  3. advanced-performance-troubleshooting-waits-latches-spinlocks

    https://www.sqlskills.com/blogs/paul/advanced-performance-troubleshooting-waits-latches-spinlocks/

  4. Docker 创建image

      images 是containers的基础.每次使用docker run 命令都要指定image.   列出本地images   zane@zane-V:~$ docker images REPO ...

  5. 给力Mac下的思维整理软件,思维导图软件合辑

    给力Mac下的思维整理软件,思维导图软件合辑 1.Mindjet MindManager for mac 10.0.211 经典的头脑风暴思维导图软件 最新破解Mindjet MindManager ...

  6. [置顶] django快速获取项目所有的URL

    django快速获取项目所有的URL django1.10快速获取项目所有的URL列表,可以用于权限控制 函数如下: import re def get_url(urllist , parent='' ...

  7. Graphicmagick编译

    为了需求给Graphicmagick加了几个支持,版本分别为mozjpeg2.1,bzip2-1.0.6,libpng-1.6.18,libwebp-0.4.3,mozjpeg-2.1,tiff-4. ...

  8. spring batch的使用和定时器Quart的使用

    Spring Batch是一个基于Spring的企业级批处理框架,它通过配合定时器Quartz来轻易实现大批量的数据读取或插入,并且全程自动化,无需人员管理. 在使用spring batch之前,得对 ...

  9. Confluence JIRA快速入门

    Confluence JIRA快速入门 http://www.confluence.cn/pages/viewpage.action?pageId=2916470

  10. jquery 限制文本框只能输入数字

    $("input[name='fangwenyudinhuishu']").keyup(function(){ var tmptxt=$(this).val(); $(this). ...