JavaMail 发送邮件,收件人为多人,抄送多人。其中包含收件人邮箱错误时的处理
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 发送邮件,收件人为多人,抄送多人。其中包含收件人邮箱错误时的处理相关推荐
- java mail 抄送多用户,JavaMail 发送邮件,收件人为多人,抄送多人。其中包含收件人邮箱错误时的处理...
1.给客户做一个发邮件的功能.收件人和抄送人可能为单个人,也可能为多个人.但是当收件人或抄送人中某一个邮箱的格式错误时,整个邮件发送就会出错停止发送.但我还需要给那些其余的人发邮件,该怎么办? 2.解 ...
- 通过javaMail发送邮件,可选添加多个收件人,密送,抄送,多个附件
通过javaMail发送邮件,可选添加多个收件人,密送,抄送,多个附件 https://blog.csdn.net/qq_35434831/article/details/79666035 版权声明: ...
- 通过javaMail发送邮件,可选添加多个收件人,密送,抄送,多个附件,超实用
自己通过学习多人的代码,并整理了一个简单,调用方便的通过javaMail发送邮件.只需填写发件邮箱地址,密码:收件人地址,附件,选择是否保存,设置自己发送邮件时的昵称就ok了.代码自动匹配设置smtp ...
- JavaMail发邮箱(多人发送,抄送多人,多附件发送)
(一):电子邮件协议 电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP.其中邮件的创建和发送只需要用到 SMTP协议,所有本文也只会涉及 ...
- java 新浪邮箱_使用javamail发送邮件,sina的邮箱作为发信人不行
我参照网上,写了一个简单的使用javamail发送邮件的程序,使用一般的邮件服务器作为发件人,程序都很正常:但使用smtp.sina.com.cn作为邮件服务器地址的发件人时,程序却验证失败!这是什么 ...
- JavaMail发送邮件的笔记及Demo
最近碰到一个需求,就是注册用户时候需要向用户发送激活邮箱,于是照着网上搜来的demo自己试着运行了一下,发件时我用的是网易163邮箱,收件时用QQ邮箱,运行后报了一个错误: 网络上搜索解决方式,多次尝 ...
- [java] JavaMail发送邮件
转载地址:http://blog.csdn.net/xietansheng/article/details/51673073 准备工作(开启邮件代理) 发送邮件首先需要有一个邮箱账号和密码,本文以网易 ...
- javaMail发送邮件读取流中的数据并作为作为附件发送邮件
一.pom.xml中添加依赖 <dependency> <groupId>com.sun.mail</groupId> ...
- Java + 腾讯企业邮箱 + javamail发送邮件
搞了一上午终于搞定了腾讯云企业邮箱的发送,话说腾讯云的东西就是繁琐,但是好用,还是得认真看文档啊,不然真的摸不着北. 腾讯企业邮箱官网:http://exmail.qq.com 点击开通 你跟着步骤走 ...
最新文章
- mongodb 连接和备份
- OD调试9—实例:深入分析代码完成软件破解
- html中可以有两个h1,在一个HTML中h1标签能出现几次?h1标签和标题标签
- 《分拣机械臂测试》- 端拾器最大吸力测试
- 三星:计划将UTG可折叠面板对外出售
- FD.io VPP基本介绍:理解向量包处理(VPP)
- Android含文档server结束(client UI接口异步请求的一部分)三
- 写录音机时遇到点问题
- [JNI]开发之旅(4)项目架构介绍
- FT232串口驱动安装教程
- pytorch训练过程中内存一直慢慢增长直到爆
- fastadmin 邮件配置
- 周鸿祎反流氓的基本商业逻辑(ZZ)
- clickhouse配置项config.xml详解——服务器配置参数
- 2022年中国云计算面临的问题及发展前景预测分析
- 百度网盘新用户超级会员多少钱
- adb shell dumpsys appops
- Win10的几个实用技巧系列之win10和win8系统哪个好用、系统任务栏和窗口假死的解决方法
- Win10工具栏显示桌面的几种方法
- Spring框架中的单例Bean是线程安全的么?