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("56