1.spring配置java
<!--郵件發送實現類--> <bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="smtp.163.com"/> <property name="port" value="25"/> <property name="username" value="test@163.com"/> <property name="password" value="test"/> <property name="javaMailProperties"> <props > <prop key="mail.smtp.auth">true</prop> </props> </property> </bean> <bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage"> <property name="from" value="test@163.com" /><!--發送人--> <property name="subject" value="System" /><!--主題--> </bean> <!--線程池異步發送郵件--> <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <property name="corePoolSize" value="5" /> <property name="maxPoolSize" value="10" /> <property name="queueCapacity" value="25" /> </bean>
2.java工具類spring
@Component("mailSenderUtil") public class MailSenderUtil { @Resource private JavaMailSender javaMailSender; @Resource private SimpleMailMessage simpleMailMessage; @Resource private TaskExecutor taskExecutor; /** * 構建郵件內容,發送郵件。 * @param email 收件人郵箱 * @param content 收件內容 */ public void send(String email,String content) { this.taskExecutor.execute(new SendMailThread(email,null,content)); } //內部線程類,利用線程池異步發郵件。 private class SendMailThread implements Runnable { private String to; private String subject; private String content; private SendMailThread(String to, String subject, String content) { super(); this.to = to; this.subject = subject; this.content = content; } @Override public void run() { sendMail(to, subject, content); } } /** * 發送郵件 * @param to 收件人郵箱 * @param subject 郵件主題 * @param content 郵件內容 */ public void sendMail(String to, String subject, String content) { try { MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "UTF-8"); messageHelper.setFrom(simpleMailMessage.getFrom()); if (subject != null) { messageHelper.setSubject(subject); } else { messageHelper.setSubject(simpleMailMessage.getSubject()); } messageHelper.setTo(to); messageHelper.setText(content, true); javaMailSender.send(message); } catch (MessagingException e) { e.printStackTrace(); } } }
3.方法調用異步
@resource private MailSenderUtil mailSenderUtil; ... mailSenderUtil.send("test@qq.com", "HelloWorld");