1.给客户做一个发邮件的功能。收件人和抄送人可能为单个人,也可能为多个人。但是当收件人或抄送人中某一个邮箱的格式错误时,整个邮件发送就会出错停止发送。但我还需要给那些其余的人发邮件,该怎么办?

2.解决思路,当收件人邮箱错误时,可以catch到异常,并从异常信息提取错误的邮箱,再把错误的邮箱从,收件人或抄送人中剔除,再次发送即可。

伪代码:

try{发送邮件
}catch(Exception e){if(判断是否为邮件发送错误异常){获取错误的邮件,并从收件人或抄送人中剔除再次发送邮件}
}

3.完整代码

@Overridepublic void sendEmail(String main, String cc, IWorkItem weekly) throws Exception {List<String> sendTo1 = new ArrayList(Arrays.asList(main.split(",")));List<String> copyTo1 = new ArrayList(Arrays.asList(cc.split(",")));String mode = "client";//test / clienttry {// 创建一个配置文件并保存Properties properties = new Properties();if(mode.equals("test")) {properties.setProperty("mail.host", "smtp.qq.com");}else {properties.setProperty("mail.host", "10.0.3.28");}properties.setProperty("mail.transport.protocol", "smtp");properties.setProperty("mail.smtp.auth", "true");if(mode.equals("test")) {//QQ存在一个特性设置SSL加密 MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true); properties.put("mail.smtp.ssl.enable", "true");properties.put("mail.smtp.ssl.socketFactory", sf);}// 创建一个session对象Session session = Session.getDefaultInstance(properties, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {if(mode.equals("test")) {return new PasswordAuthentication("569296263@qq.com", "asdasdasd");}else {return new PasswordAuthentication("Polarion@bocfullertonbank.com", "!QAZ2wsx");}}});// 开启debug模式session.setDebug(true);// 获取连接对象Transport transport = session.getTransport();// 连接服务器if(mode.equals("test")) {transport.connect("smtp.qq.com", "569296263@qq.com", "fx");}else {transport.connect("10.0.3.28", "Polarion@bocfullertonbank.com", "!QAZ2wsx");}// 创建邮件对象MimeMessage mimeMessage = new MimeMessage(session);// 邮件发送人if(mode.equals("test")) {mimeMessage.setFrom(new InternetAddress("569296263@qq.com"));}else {mimeMessage.setFrom(new InternetAddress("Polarion@bocfullertonbank.com"));}// 邮件接收人InternetAddress[] sendTo = InternetAddress.parse(main);mimeMessage.setRecipients(Message.RecipientType.TO, sendTo);LOG.error("sendTo====================================" + main);// 抄送InternetAddress[] copyTo = InternetAddress.parse(cc);LOG.error("copyTo====================================" + cc);mimeMessage.setRecipients(Message.RecipientType.CC, copyTo);//邮件标题String title = weekly.getTitle();mimeMessage.setSubject(title + "_项目周报");// 邮件内容String content = getMailContent(weekly);if(mode.equals("test")) {mimeMessage.setContent(content,"text/html;charset=UTF-8");LOG.error("content1====================================" + content);}else {mimeMessage.setContent(content,"text/html;charset=gb2312");LOG.error("content2====================================" + content);}// 发送邮件transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients());// 关闭连接transport.close();} catch (Exception e) {if (e instanceof SendFailedException) {for(Address address: ((SendFailedException) e).getInvalidAddresses()){LOG.error("错误信息邮箱====================================" + address.toString());if(sendTo1.contains(address.toString())) {sendTo1.remove(address.toString());}if(copyTo1.contains(address.toString())) {copyTo1.remove(address.toString());}}try {// 创建一个配置文件并保存Properties properties = new Properties();if(mode.equals("test")) {properties.setProperty("mail.host", "smtp.qq.com");}else {properties.setProperty("mail.host", "10.0.3.28");}properties.setProperty("mail.transport.protocol", "smtp");properties.setProperty("mail.smtp.auth", "true");if(mode.equals("test")) {//QQ存在一个特性设置SSL加密 MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true); properties.put("mail.smtp.ssl.enable", "true");properties.put("mail.smtp.ssl.socketFactory", sf);}// 创建一个session对象Session session = Session.getDefaultInstance(properties, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {if(mode.equals("test")) {return new PasswordAuthentication("569296263@qq.com", "foajwfjgwcihbbfa");}else {return new PasswordAuthentication("Polarion@bocfullertonbank.com", "!QAZ2wsx");}}});// 开启debug模式session.setDebug(true);// 获取连接对象Transport transport = session.getTransport();// 连接服务器if(mode.equals("test")) {transport.connect("smtp.qq.com", "569296263@qq.com", "foajwfjgwcihbbfa");}else {transport.connect("10.0.3.28", "Polarion@bocfullertonbank.com", "!QAZ2wsx");}// 创建邮件对象MimeMessage mimeMessage = new MimeMessage(session);// 邮件发送人if(mode.equals("test")) {mimeMessage.setFrom(new InternetAddress("569296263@qq.com"));}else {mimeMessage.setFrom(new InternetAddress("Polarion@bocfullertonbank.com"));}String sendTo2 = "";// 邮件接收人for(String email : sendTo1) {sendTo2 += email + ",";}sendTo2 = sendTo2.substring(0,sendTo2.length()-1);String copyTo2 = "";for(String email : copyTo1) {copyTo2 += email + ",";}copyTo2 = copyTo2.substring(0,copyTo2.length()-1);InternetAddress[] sendTo = InternetAddress.parse(sendTo2);mimeMessage.setRecipients(Message.RecipientType.TO, sendTo);LOG.error("sendTo2====================================" + sendTo2);// 抄送InternetAddress[] copyTo = InternetAddress.parse(copyTo2);LOG.error("copyTo2====================================" + copyTo2);mimeMessage.setRecipients(Message.RecipientType.CC, copyTo);//邮件标题String title = weekly.getTitle();mimeMessage.setSubject(title + "_项目周报");// 邮件内容String content = getMailContent(weekly);if(mode.equals("test")) {mimeMessage.setContent(content,"text/html;charset=UTF-8");}else {mimeMessage.setContent(content,"text/html;charset=gb2312");}// 发送邮件transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients());// 关闭连接transport.close();}catch (Exception e1) {LOG.error("错误信息====================================" + e1.getMessage());}}}}

JavaMail 发送邮件,收件人为多人,抄送多人。其中包含收件人邮箱错误时的处理相关推荐

  1. java mail 抄送多用户,JavaMail 发送邮件,收件人为多人,抄送多人。其中包含收件人邮箱错误时的处理...

    1.给客户做一个发邮件的功能.收件人和抄送人可能为单个人,也可能为多个人.但是当收件人或抄送人中某一个邮箱的格式错误时,整个邮件发送就会出错停止发送.但我还需要给那些其余的人发邮件,该怎么办? 2.解 ...

  2. 通过javaMail发送邮件,可选添加多个收件人,密送,抄送,多个附件

    通过javaMail发送邮件,可选添加多个收件人,密送,抄送,多个附件 https://blog.csdn.net/qq_35434831/article/details/79666035 版权声明: ...

  3. 通过javaMail发送邮件,可选添加多个收件人,密送,抄送,多个附件,超实用

    自己通过学习多人的代码,并整理了一个简单,调用方便的通过javaMail发送邮件.只需填写发件邮箱地址,密码:收件人地址,附件,选择是否保存,设置自己发送邮件时的昵称就ok了.代码自动匹配设置smtp ...

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

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

  5. java 新浪邮箱_使用javamail发送邮件,sina的邮箱作为发信人不行

    我参照网上,写了一个简单的使用javamail发送邮件的程序,使用一般的邮件服务器作为发件人,程序都很正常:但使用smtp.sina.com.cn作为邮件服务器地址的发件人时,程序却验证失败!这是什么 ...

  6. JavaMail发送邮件的笔记及Demo

    最近碰到一个需求,就是注册用户时候需要向用户发送激活邮箱,于是照着网上搜来的demo自己试着运行了一下,发件时我用的是网易163邮箱,收件时用QQ邮箱,运行后报了一个错误: 网络上搜索解决方式,多次尝 ...

  7. [java] JavaMail发送邮件

    转载地址:http://blog.csdn.net/xietansheng/article/details/51673073 准备工作(开启邮件代理) 发送邮件首先需要有一个邮箱账号和密码,本文以网易 ...

  8. javaMail发送邮件读取流中的数据并作为作为附件发送邮件

    一.pom.xml中添加依赖 <dependency>             <groupId>com.sun.mail</groupId>            ...

  9. Java + 腾讯企业邮箱 + javamail发送邮件

    搞了一上午终于搞定了腾讯云企业邮箱的发送,话说腾讯云的东西就是繁琐,但是好用,还是得认真看文档啊,不然真的摸不着北. 腾讯企业邮箱官网:http://exmail.qq.com 点击开通 你跟着步骤走 ...

最新文章

  1. [JAVA EE] Thymeleaf 常用工具类
  2. 浅谈代码的执行效率(2):编译器的威力 [摘自赵劼老师的博客]
  3. Ubuntu根目录下各文件夹的功能详细介绍
  4. 项目管理基本目录结构
  5. JS学习(this关键字)
  6. oracle plsql update两个字段_Oracle 学习笔记(Windows 环境下安装 + PL/SQL)
  7. Flutter进阶第12篇: 检测应用版本号、服务器下载文件以及实现App自动升级、安装
  8. JVM监控及诊断工具命令行篇之jinfo
  9. 《LDA数学八卦》读后笔记
  10. 文件管理服务器搭建教程,文件服务器搭建教程
  11. python 猿编程模块(一)ybc_speech
  12. 真实的感情---可是你没有
  13. HDMI设计1--HDMI 1.4b SPEC的阅读个人总结
  14. manjaro 折腾总结
  15. 优秀程序员的18大法则-兄弟连IT教育
  16. 广东石油化工学院计算机基础,广东石油化工学院计算机基础答案
  17. C# 程序配置文件的操作(ConfigurationManager的使用)
  18. android u8220刷机
  19. 淘宝网将正式推B2C
  20. NEO4J搭建京东手机类小型知识图谱

热门文章

  1. mysql服务端执行sql_服务器执行MySQL耗时问题解决全过程
  2. C语言入门——打印爱心
  3. “微信勒索病毒”全纪实:这种事只能发生在中国
  4. Spring MVC代码实例系列-06:Spring MVC配置Hibernate-Validator以及自定义校验注解
  5. EA001-186-2627——杨明泰
  6. 如何在word插入一个可以勾选和取消的方框
  7. Windows界面编程第八篇 listbox彩色显示隔行变色
  8. 51单片机使用sprintf和printf
  9. 浅谈支撑起支付宝整个“11-11”的幕后功臣OceanBase数据库
  10. css部分内容个人知识区汇总