关键技术: 1、MimeMessage的setRecipients方法设置邮件的收件人,其中Message.RecipientType.TO常量表示收件人类型是邮件接收者,Message.RecipientType.CC常量表示收件人类型是抄送者,Message.RecipientType.BCC常量表示收件人的类型是密送着。2、在调用MimeMessage的setRecipients方法时,除了可以指定收件人的类型外,还可以传入一个数组,指定多个收件人的地址。
SourceCode:import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
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 MultiMailsender {/*** 发送邮件给多个接收者* @param mailInfo    带发送邮件的信息* @return*/public static boolean sendMailtoMultiReceiver(MultiMailSenderInfo mailInfo){MyAuthenticator authenticator = null;if (mailInfo.isValidate()) {authenticator = new MyAuthenticator(mailInfo.getUserName(),mailInfo.getPassword());}Session sendMailSession = Session.getInstance(mailInfo.getProperties(), authenticator);try {Message mailMessage = new MimeMessage(sendMailSession);// 创建邮件发送者地址Address from = new InternetAddress(mailInfo.getFromAddress());mailMessage.setFrom(from);// 创建邮件的接收者地址,并设置到邮件消息中Address[] tos = null;String[] receivers = mailInfo.getReceivers();if (receivers != null){// 为每个邮件接收者创建一个地址tos = new InternetAddress[receivers.length + 1];tos[0] = new InternetAddress(mailInfo.getToAddress());for (int i=0; i<receivers.length; i++){tos[i+1] = new InternetAddress(receivers[i]);}} else {tos = new InternetAddress[1];tos[0] = new InternetAddress(mailInfo.getToAddress());}// 将所有接收者地址都添加到邮件接收者属性中mailMessage.setRecipients(Message.RecipientType.TO, tos);mailMessage.setSubject(mailInfo.getSubject());mailMessage.setSentDate(new Date());// 设置邮件内容Multipart mainPart = new MimeMultipart();BodyPart html = new MimeBodyPart();html.setContent(mailInfo.getContent(), "text/html; charset=GBK");mainPart.addBodyPart(html);mailMessage.setContent(mainPart);// 发送邮件Transport.send(mailMessage);return true;} catch (MessagingException ex) {ex.printStackTrace();}return false;}/*** 发送带抄送的邮件* @param mailInfo    待发送邮件的消息* @return*/public static boolean sendMailtoMultiCC(MultiMailSenderInfo mailInfo){MyAuthenticator authenticator = null;if (mailInfo.isValidate()) {authenticator = new MyAuthenticator(mailInfo.getUserName(),mailInfo.getPassword());}Session sendMailSession = Session.getInstance(mailInfo.getProperties(), authenticator);try {Message mailMessage = new MimeMessage(sendMailSession);// 创建邮件发送者地址Address from = new InternetAddress(mailInfo.getFromAddress());mailMessage.setFrom(from);// 创建邮件的接收者地址,并设置到邮件消息中Address to = new InternetAddress(mailInfo.getToAddress());mailMessage.setRecipient(Message.RecipientType.TO, to);// 获取抄送者信息String[] ccs = mailInfo.getCcs();if (ccs != null){// 为每个邮件接收者创建一个地址Address[] ccAdresses = new InternetAddress[ccs.length];for (int i=0; i<ccs.length; i++){ccAdresses[i] = new InternetAddress(ccs[i]);}// 将抄送者信息设置到邮件信息中,注意类型为Message.RecipientType.CCmailMessage.setRecipients(Message.RecipientType.CC, ccAdresses);} mailMessage.setSubject(mailInfo.getSubject());mailMessage.setSentDate(new Date());// 设置邮件内容Multipart mainPart = new MimeMultipart();BodyPart html = new MimeBodyPart();html.setContent(mailInfo.getContent(), "text/html; charset=GBK");mainPart.addBodyPart(html);mailMessage.setContent(mainPart);// 发送邮件Transport.send(mailMessage);return true;} catch (MessagingException ex) {ex.printStackTrace();}return false;}public static void main(String[] args) {// 创建邮件信息MultiMailSenderInfo mailInfo = new MultiMailSenderInfo();mailInfo.setMailServerHost("smtp.sina.com.cn");mailInfo.setMailServerPort("25");mailInfo.setValidate(true);mailInfo.setUserName("***");mailInfo.setPassword("***");mailInfo.setFromAddress("***@sina.com");mailInfo.setToAddress("***@163.com");mailInfo.setSubject("MyMail测试");mailInfo.setContent("我的邮件测试/n/rMy test mail/n/r");String[] receivers = new String[]{"***@163.com", "***@tom.com"};String[] ccs = receivers;mailInfo.setReceivers(receivers);mailInfo.setCcs(ccs);MultiMailsender.sendMailtoMultiReceiver(mailInfo);MultiMailsender.sendMailtoMultiCC(mailInfo);}/*** 发送多接收者类型邮件的基本信息*/public static class MultiMailSenderInfo extends MailSenderInfo{// 邮件的接收者,可以有多个private String[] receivers;// 邮件的抄送者,可以有多个private String[] ccs;public String[] getCcs() {return ccs;}public void setCcs(String[] ccs) {this.ccs = ccs;}public String[] getReceivers() {return receivers;}public void setReceivers(String[] receivers) {this.receivers = receivers;}}
}

转载于:https://www.cnblogs.com/northeastTycoon/p/5911976.html

java 给多人发送、抄送相关推荐

  1. JavaMail发邮箱(多人发送,抄送多人,多附件发送)

    (一):电子邮件协议     电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP.其中邮件的创建和发送只需要用到 SMTP协议,所有本文也只会涉及 ...

  2. java 实现邮件的发送, 抄送及多附件

    import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.*; im ...

  3. Java中利用qqemai发送QQ邮件

    最近自己了解下Java中利用mai发送QQ邮件 1.QQ邮箱设置 1.1 进去QQ邮箱-->设置-->账号-->进行设置如下图 以下源码 package test; import j ...

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

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

  5. 使用定时器完成每日发送多个邮件(发邮件,支持多人发送)

    今天组长有了新的需求,要求每日自动生成一份Excel,并且发送到指定账户的邮箱中,上午研究了一下发邮件,但是发现一般的发邮件代码都很麻烦,于是我就想到了一个工具,HuTool,真的很方便Hutool参 ...

  6. java实现多人聊天室+私聊+Derby数据库

    java实现多人聊天室+私聊+Derby数据库(没有实现注册功能) 这个聊天室困扰了我好久好久,一步一步的修改,终于不负我的努力啊,可算完成了,对于一个初学java的来说,完成第一个比较完整的项目,也 ...

  7. java实现邮件代理发送

    java实现邮件代理发送 java发送邮件功能支持代理,但是不支持http代理,支持sock代理(支持SOCKS V4或V5协议) 实现效果 使用自己的邮箱进行账密认证 以群组邮箱地址作为发件人进行发 ...

  8. java 常见几种发送http请求案例

    java 常见几种发送http请求案例 直接换成CloseableHttpClient还不行,需要这样使用CloseableHttpClient httpClient = HttpClientBuil ...

  9. java 怎么向串口发送指令_idea ssm项目java程序使用十六进制rxtx包向串口发送指令的方法...

    1.前提 idea ssm项目环境要配好,这里就不多赘述了,自己配好 2.下载配置rxtx包 官网下载:http://rxtx.qbang.org/wiki/index.php/Download 根据 ...

最新文章

  1. forms oracle runtime_Oracle EBS R12 clone 完毕后,登陆到系统,在运行FORMS程序的时候出现FRM-92101...
  2. XML数据读取方式性能比较(一)
  3. 算法学习--Day5
  4. Silverlight BUG
  5. .NET Core中的一个接口多种实现的依赖注入与动态选择
  6. 设计模式学习笔记——代理(Proxy)模式
  7. 黑客是否可以攻击被拔掉网线的电脑?
  8. Android 用java代码动态修改UI界面
  9. 松灵机器人Scout代码分析 --- scout_ros
  10. java给list排序_java 怎么将List里面数据排序
  11. matlab遗传算法tsp程序,遗传算法解TSP问题的程序
  12. 蓝桥杯 青少年创意编程大赛 scratch 组、中国电子学会scratch等级考试等
  13. Oracle 18c新特性一览
  14. rebase详解——非常精髓
  15. uniapp - APP判断是否开启位置信息服务判断是否授权位置信息权限
  16. H.265编码视频播放器在播放FLV视频流时出现黑屏,如何解决?
  17. 21 C++ 长度单位转换
  18. 解决webpack打包css时CssSyntaxError的问题
  19. 312、519、122三大崩盘实战复盘
  20. 用于光波导耦合的倾斜光栅分析

热门文章

  1. AcWing 854. Floyd求最短路(模板)
  2. php提取ip源码,PHP(源码) 如何获取客户端的IP地址
  3. Shell脚本编程之(一)Shell脚本简介
  4. hibernate annotations @Entity hql XX not mapped
  5. 程序员的小技能,1行代码修改开机密码、1张图片让你电脑死机
  6. git 远程代码被覆盖
  7. ectouch手机商城首页调用指定分类下的商品
  8. 危险的SharedPreference操作
  9. linux tomcat配置https
  10. J2EE (十) Java中多种方式实现单例模式