您的位置:首页 > 产品设计 > UI/UE

Java 多线程 BlockingQueue 实现 高并发邮件 代码 SystemEmailUtils

2014-10-27 16:02 621 查看
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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 线程安全
相关文章推荐