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;
}
}
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 多线程 BlockingQueue 实现 高并发邮件 代码 SystemEmailSender
- Java 多线程 BlockingQueue 实现 高并发邮件 代码 SystemEmailServiceImpl
- Java 多线程 BlockingQueue 实现 高并发邮件 代码 SystemEmailBlockingQueue
- Java 多线程 BlockingQueue 实现 高并发邮件 代码 MailBean
- Java 多线程 BlockingQueue 实现 高并发邮件 概论
- 【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)
- 【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)
- Java HtmlEmail 邮件发送的简单实现代码
- 【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)
- java挑战高并发(6):Runnable和Thread实现多线程的区别(含代码)
- 【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)
- 【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)
- 【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)
- 【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)(r)
- 【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)
- 【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)
- [Java] 正则表达式 02 EmailSpider 抓邮件, CodeCounter 统计程序有效代码行数
- java实现socket多线程代码
- Java 7之多线程并发容器 - LinkedBlockingQueue
- java 发送邮件 email相关操作代码测试,生成复杂格式邮件,发送邮件相关操作