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

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

伪代码:

try{

发送邮件

}catch(Exception e){

if(判断是否为邮件发送错误异常){

获取错误的邮件,并从收件人或抄送人中剔除

再次发送邮件

}

}

3.完整代码

@Override

public void sendEmail(String main, String cc, IWorkItem weekly) throws Exception {

List sendTo1 = new ArrayList(Arrays.asList(main.split(",")));

List copyTo1 = new ArrayList(Arrays.asList(cc.split(",")));

String mode = "client";//test / client

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() {

@Override

protected 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() {

@Override

protected 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());

}

}

}

}

标签:收件人,mimeMessage,抄送,JavaMail,new,com,properties,邮件,mode

来源: https://blog.csdn.net/qq_29622845/article/details/114365634

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

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

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

  2. java mail smtps,使用javamail发SMTPS邮件,javamailsmtps邮件,Java通常情况下都不会

    使用javamail发SMTPS邮件,javamailsmtps邮件,Java通常情况下都不会 Java 通常情况下都不会对smtp发邮件加密,但是gmail做了加密. 首先需要引用 Javamail ...

  3. java mail outlook_无法使用JavaMail读取Outlook邮件,而使用Gmail工作

    基本上,我编写了一个可从收件箱中读取电子邮件的应用程序.我一直使用Gmail发送的电子邮件测试应用程序.但是现在,当我试图阅读从Outlook发送的电子邮件时,我没有收到任何内容.无法使用JavaMa ...

  4. Java Mail给163@com发送邮件,报554 DT:SPM错误

    首先看一下网易邮箱给的这个错误信息是什么意思: •554 DT:SPM 发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件.请检查是否有用户发送病毒或者垃圾邮件: 是因为被当成的垃圾邮件,这主 ...

  5. java mail 抄送多用户_javaMail邮件发送功能(多收件人,多抄送人,多密送人,多附件)...

    先看源码,再来理解,可以直接使用! JavaMailWithAttachment.java: private MimeMessage message; private Session session; ...

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

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

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

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

  8. mail java_基于JavaMail的Java邮件发送:简单邮件发送

    http://blog.csdn.net/xietansheng/article/details/51673073 http://www.cnblogs.com/codeplus/archive/20 ...

  9. Java Web(十三) 使用javamail进行发送邮件,(使用QQ,163,新浪邮箱服务器)

    加油加油. --WH 一.发送邮件的原理 在了解其原理之前,先要知道两个协议,SMTP和POP3 SMTP:Simple Mail Transfer Protocol,即简单邮件传输协议,发送邮件的协 ...

最新文章

  1. Dart 2为移动开发做出改进
  2. python3.5怎么使用-在ros中使用python3.5
  3. 设置超链接在新的窗口中打开,而不是在本窗口中打开
  4. 新挑战之打造一流能源新材计算平台 2018-10-10
  5. boost::variant2模块实现默认构造相关的测试程序
  6. 设计模式之_动态代理_02
  7. MetInfo最新版代码审计漏洞合集
  8. python怎么退出help_(转)python中如何使用help命令?
  9. 【IfICan】脚步很乱!
  10. Jawin –Java/Win32互动项目 可调用DLL及COM的调用项目
  11. 《算法图解》第九章 动态规划
  12. SMOTE(Synthetic Minority Over-Sampling Technique ,即“人工少数类过采样法“)----Python调包简单实现
  13. 非常不错的window磁盘清理工具C盘清理
  14. 吴伯凡-认知方法论-既然认知意味着痛苦,为什么选择认知?
  15. 蓝桥杯李白打酒php,蓝桥杯:李白打酒
  16. 江门环境监测实验室通风工程设计
  17. 【安卓开机启动】安卓JVM加载so库流程
  18. Linux之修改语言(语系)
  19. 大型项目前端架构浅谈(8000字原创首发)
  20. 【笔记】多因素条件下注意力分配建模

热门文章

  1. linux环境配置git认证
  2. 计算机怎么游戏教学,谈计算机教学中的游戏教学法原稿(范文1)
  3. 洪荒开局鸿蒙绑定系统,洪荒开局绑定鸿钧
  4. 新手的linux之旅 五、安装IE浏览器
  5. 【追踪】山东曲阜孔林附近女子被斩首续:系凶手女友
  6. ADS 2023 下载链接
  7. Photoshop-八步教你设计扁平化图标阴影部分
  8. 软件测试工程师自我介绍范文_软件测试面试自我介绍范文3篇
  9. 微信WeixinJSBridge支付,H5微信支付,react 微信支付
  10. rcu锁原理以及rcu example学习