package com.sp2p.service; import java.io.UnsupportedEncodingException; import java.sql.SQLException; import java.util.Map; import java.util.Properties; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import javax.mail.MessagingException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import com.sp2p.constants.IConstants; import com.sp2p.service.admin.GetMailMsgOnUpService; public class MailSendService { private static Log log = LogFactory.getLog(MailSendService.class); private static boolean isFlag = false; private static String EmailNick = IConstants.NICK; private GetMailMsgOnUpService getMailMsgOnUpService; private JavaMailSenderImpl sender; private ExecutorService pool = Executors.newFixedThreadPool(10); private ThreadPoolTaskExecutor taskExecutor; public void setTaskExecutor(ThreadPoolTaskExecutor taskExecutor) { this.taskExecutor = taskExecutor; } public static void setIsFlag(boolean flag) { isFlag = flag; } private void setProperty() throws SQLException { log.info("start query mailSet........"); Map<String, String> mailSet = getMailMsgOnUpService.getMailSet(); if (mailSet != null) { try { IConstants.MAIL_HOST = mailSet.get("host"); IConstants.MAIL_USERNAME = mailSet.get("mailaddress"); IConstants.MAIL_PASSWORD = mailSet.get("mailpassword"); IConstants.MAIL_FROM = mailSet.get("sendmail"); IConstants.NICK =javax.mail.internet.MimeUtility.encodeText(mailSet.get("sendname")); } catch (UnsupportedEncodingException e) { log.error(e); e.printStackTrace(); } ; } sender.setHost(IConstants.MAIL_HOST.trim()); sender.setUsername(IConstants.MAIL_USERNAME.trim()); sender.setPassword(IConstants.MAIL_PASSWORD.trim()); isFlag = true; log.info("end query mailSet........"); } /** * 发送邮件 */ public MailSendService() { sender = new JavaMailSenderImpl(); sender.setHost(IConstants.MAIL_HOST.trim()); sender.setUsername(IConstants.MAIL_USERNAME.trim()); sender.setPassword(IConstants.MAIL_PASSWORD.trim()); Properties javaMailProperties = new Properties(); javaMailProperties.put("mail.smtp.auth", "true"); javaMailProperties.put("mail.smtp.timeout", "25000"); sender.setJavaMailProperties(javaMailProperties); } /** * 发送验证邮件 * @param userName * @param email * @param verificationUrl */ public void sendRegEmail(final String userName, final String email, final String verificationUrl) { try { setProperty(); } catch (SQLException e1) { e1.printStackTrace(); } pool.execute(new Runnable() { @Override public void run() { log.info("1=== start send email...."); sender = new JavaMailSenderImpl(); sender.setHost(IConstants.MAIL_HOST.trim()); sender.setUsername(IConstants.MAIL_USERNAME.trim()); sender.setPassword(IConstants.MAIL_PASSWORD.trim()); Properties javaMailProperties = new Properties(); javaMailProperties.put("mail.smtp.auth", "true"); javaMailProperties.put("mail.smtp.timeout", "25000"); sender.setJavaMailProperties(javaMailProperties); MimeMessage mms = sender.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(mms, true, "utf-8"); //String nick = javax.mail.internet.MimeUtility.encodeText(IConstants.NICK); //helper.setFrom(IConstants.NICK+"<"+IConstants.MAIL_FROM+">"); //helper.setFrom(IConstants.MAIL_FROM); helper.setFrom(new InternetAddress(IConstants.MAIL_FROM,IConstants.NICK)); helper.setTo(email); helper.setSubject("桂林市合和年信贷激活邮件通知"); StringBuffer buf = new StringBuffer(); buf.append("<HTML><BODY style='border-width:0px'>"); buf .append("<H4 style='font-weight:normal;font-size:14px'>尊敬的<span>"); buf.append(userName); buf.append("</span>:</H4>"); buf.append("<BR/>"); buf.append("<DIV>您的桂林市合和年信贷账号已经成功创建,请点击此链接激活账号:</DIV>"); buf.append("<BR/>"); buf.append("<DIV><a href='"); buf.append(verificationUrl); buf.append("'>"); buf.append(verificationUrl); buf.append("</a></DIV>"); buf.append("</BODY></HTML>"); helper.setText(buf.toString(), true); sender.send(mms); log.info("2=== end email."); } catch (MessagingException e) { log.error(e); e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } }); } public void setGetMailMsgOnUpService( GetMailMsgOnUpService getMailMsgOnUpService) { this.getMailMsgOnUpService = getMailMsgOnUpService; } }