Java 多線程 BlockingQueue 實現 高併發郵件 代碼 SystemEmailUtils

package com.pingan.emall.biz.util;


import com.paic.pafa.app.lwc.core.util.DevLog;
import java.util.Properties;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.apache.commons.lang.StringUtils;


public class SystemEmailUtils {

private static Session session = null;
private static Object lock = new Object();

public static boolean sendMail(MailBean mail) {
if (mail == null) {
return false;
}

try {
MimeMessage mimeMessage = getMimeMessage(mail);
Transport.send(mimeMessage);
return true;
} catch (MessagingException e) {
DevLog.error("Exception happens when send mail ", e);
return false;
}
}

private static MimeMessage getMimeMessage(MailBean mail) throws MessagingException {
MimeMessage mimeMessage = new MimeMessage(getDefaultSession());

if (StringUtils.isNotEmpty(mail.getMailFrom())) {
mimeMessage.setFrom(new InternetAddress(mail.getMailFrom()));
}

if (StringUtils.isNotEmpty(mail.getMailTo())) {
for (String mailTo : StringUtils.split(mail.getMailTo(), ';')) {
mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
}
}

if (StringUtils.isNotEmpty(mail.getMailCC())) {
for (String cc : StringUtils.split(mail.getMailCC(), ';')) {
mimeMessage.addRecipient(Message.RecipientType.CC, new InternetAddress(cc));
}
}

if (StringUtils.isNotEmpty(mail.getSubject())) {
mimeMessage.setSubject(mail.getSubject(), "GBK");
}

if (StringUtils.isNotEmpty(mail.getContent())) {
mimeMessage.setContent(mail.getContent(), "text/html;charset=GBK");
}

return mimeMessage;
}

private static Session getDefaultSession() throws MessagingException {
if (session == null) {
synchronized (lock) {
if (session == null) {
Properties properties = new Properties();
ResourceBundle bundle = PropertyResourceBundle.getBundle("context-emall");
String mailServer = bundle.getString("MailServerName");
if (StringUtils.isEmpty(mailServer)) {
throw new MessagingException("Mail Server not configured");
}
properties.setProperty("mail.smtp.host", mailServer);
/*String senderName = bundle.getString("MailSenderName");
if (StringUtils.isNotEmpty(senderName)) {

}
String sendPassword = bundle.getString("MailSenderPassword");*/
properties.setProperty("mail.smtp.auth", "false");

session = Session.getDefaultInstance(properties);
}
}
}
return session;
}
}
發佈了80 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章