java mail 抄送多用户,JavaMail 发送邮件,收件人为多人,抄送多人。其中包含收件人邮箱错误时的处理...
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 发送邮件,收件人为多人,抄送多人。其中包含收件人邮箱错误时的处理...相关推荐
- JavaMail 发送邮件,收件人为多人,抄送多人。其中包含收件人邮箱错误时的处理
1.给客户做一个发邮件的功能.收件人和抄送人可能为单个人,也可能为多个人.但是当收件人或抄送人中某一个邮箱的格式错误时,整个邮件发送就会出错停止发送.但我还需要给那些其余的人发邮件,该怎么办? 2.解 ...
- java mail smtps,使用javamail发SMTPS邮件,javamailsmtps邮件,Java通常情况下都不会
使用javamail发SMTPS邮件,javamailsmtps邮件,Java通常情况下都不会 Java 通常情况下都不会对smtp发邮件加密,但是gmail做了加密. 首先需要引用 Javamail ...
- java mail outlook_无法使用JavaMail读取Outlook邮件,而使用Gmail工作
基本上,我编写了一个可从收件箱中读取电子邮件的应用程序.我一直使用Gmail发送的电子邮件测试应用程序.但是现在,当我试图阅读从Outlook发送的电子邮件时,我没有收到任何内容.无法使用JavaMa ...
- Java Mail给163@com发送邮件,报554 DT:SPM错误
首先看一下网易邮箱给的这个错误信息是什么意思: •554 DT:SPM 发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件.请检查是否有用户发送病毒或者垃圾邮件: 是因为被当成的垃圾邮件,这主 ...
- java mail 抄送多用户_javaMail邮件发送功能(多收件人,多抄送人,多密送人,多附件)...
先看源码,再来理解,可以直接使用! JavaMailWithAttachment.java: private MimeMessage message; private Session session; ...
- 通过javaMail发送邮件,可选添加多个收件人,密送,抄送,多个附件
通过javaMail发送邮件,可选添加多个收件人,密送,抄送,多个附件 https://blog.csdn.net/qq_35434831/article/details/79666035 版权声明: ...
- 通过javaMail发送邮件,可选添加多个收件人,密送,抄送,多个附件,超实用
自己通过学习多人的代码,并整理了一个简单,调用方便的通过javaMail发送邮件.只需填写发件邮箱地址,密码:收件人地址,附件,选择是否保存,设置自己发送邮件时的昵称就ok了.代码自动匹配设置smtp ...
- mail java_基于JavaMail的Java邮件发送:简单邮件发送
http://blog.csdn.net/xietansheng/article/details/51673073 http://www.cnblogs.com/codeplus/archive/20 ...
- Java Web(十三) 使用javamail进行发送邮件,(使用QQ,163,新浪邮箱服务器)
加油加油. --WH 一.发送邮件的原理 在了解其原理之前,先要知道两个协议,SMTP和POP3 SMTP:Simple Mail Transfer Protocol,即简单邮件传输协议,发送邮件的协 ...
最新文章
- Dart 2为移动开发做出改进
- python3.5怎么使用-在ros中使用python3.5
- 设置超链接在新的窗口中打开,而不是在本窗口中打开
- 新挑战之打造一流能源新材计算平台 2018-10-10
- boost::variant2模块实现默认构造相关的测试程序
- 设计模式之_动态代理_02
- MetInfo最新版代码审计漏洞合集
- python怎么退出help_(转)python中如何使用help命令?
- 【IfICan】脚步很乱!
- Jawin –Java/Win32互动项目 可调用DLL及COM的调用项目
- 《算法图解》第九章 动态规划
- SMOTE(Synthetic Minority Over-Sampling Technique ,即“人工少数类过采样法“)----Python调包简单实现
- 非常不错的window磁盘清理工具C盘清理
- 吴伯凡-认知方法论-既然认知意味着痛苦,为什么选择认知?
- 蓝桥杯李白打酒php,蓝桥杯:李白打酒
- 江门环境监测实验室通风工程设计
- 【安卓开机启动】安卓JVM加载so库流程
- Linux之修改语言(语系)
- 大型项目前端架构浅谈(8000字原创首发)
- 【笔记】多因素条件下注意力分配建模