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. mongodb 连接和备份
  2. OD调试9—实例:深入分析代码完成软件破解
  3. html中可以有两个h1,在一个HTML中h1标签能出现几次?h1标签和标题标签
  4. 《分拣机械臂测试》- 端拾器最大吸力测试
  5. 三星:计划将UTG可折叠面板对外出售
  6. FD.io VPP基本介绍:理解向量包处理(VPP)
  7. Android含文档server结束(client UI接口异步请求的一部分)三
  8. 写录音机时遇到点问题
  9. [JNI]开发之旅(4)项目架构介绍
  10. FT232串口驱动安装教程
  11. pytorch训练过程中内存一直慢慢增长直到爆
  12. fastadmin 邮件配置
  13. 周鸿祎反流氓的基本商业逻辑(ZZ)
  14. clickhouse配置项config.xml详解——服务器配置参数
  15. 2022年中国云计算面临的问题及发展前景预测分析
  16. 百度网盘新用户超级会员多少钱
  17. adb shell dumpsys appops
  18. Win10的几个实用技巧系列之win10和win8系统哪个好用、系统任务栏和窗口假死的解决方法
  19. Win10工具栏显示桌面的几种方法
  20. Spring框架中的单例Bean是线程安全的么?

热门文章

  1. python3生成自定义大小的图片
  2. TD—LTE小区切换技术分析和建议
  3. arcgis10.0及以上版本,使用arcpy加载在arctoolbox中批量转换MXD空间版本(只能从高转低)
  4. PyAutoGUI 桌面自动化
  5. java面向对象之多态
  6. 揭晓电影中的子弹时间与Nerf新视角合成
  7. 英语名词格‘s和s‘的用法
  8. 手游《白话三国》挂机称霸 一统天下(设计思路整理)
  9. Dojo 创造项目, Build 使用 16
  10. 实现多方位网络营销的一些技巧