- 1. 邮件相关接口
- /**
- * Description : 邮件相关服务接口.
- *
- * Create Time : 2013年12月4日 上午09:06:42 Copyright :
- *
- * Copyright (c) 2010 - 2013 All rights reserved.
- *
- * @author jianghua
- * @version 1.0
- */
- public interface EmailService {
- /**
- * 发送邮件
- *
- * @param mailto
- * 收件邮箱
- * @param fromEmail
- * 发送邮箱
- * @param text
- * 内容
- * @param title
- * 标题
- * @throws Exception
- */
- public void sendMail(String mailto, String fromEmail, String text,
- String title) throws Exception;
- /**
- * 批量下发邮件
- *
- * @param mailto
- * 收件邮箱
- * @param fromEmail
- * 发送邮箱
- * @param text
- * 内容
- * @param title
- * 标题
- * @throws Exception
- */
- public void sendBatchMail(String[] mailto, String fromEmail, String text,
- String title) throws Exception;
- /**
- * 批量下发邮件待附件
- *
- * @param mailto
- * 收件邮箱
- * @param fromEmail
- * 发送邮箱
- * @param text
- * 内容
- * @param title
- * 标题
- * @param filePath
- * 附件
- * @throws Exception
- */
- public void sendBatchMailWithFile(String[] mailto, String fromEmail,
- String text, String title, String[] filePath) throws Exception;
- }
- 2. 接口实现
- import java.util.ArrayList;
- import java.util.List;
- import javax.activation.DataHandler;
- import javax.activation.FileDataSource;
- import javax.annotation.Resource;
- import javax.mail.BodyPart;
- import javax.mail.Message;
- import javax.mail.Multipart;
- import javax.mail.internet.InternetAddress;
- import javax.mail.internet.MimeBodyPart;
- import javax.mail.internet.MimeMessage;
- import javax.mail.internet.MimeMultipart;
- import javax.mail.internet.MimeUtility;
- import org.springframework.mail.javamail.JavaMailSenderImpl;
- import org.springframework.mail.javamail.MimeMessageHelper;
- /**
- * Description : 邮件相关服务接口实现.
- *
- * Create Time : 2013年12月2日 上午10:10:25
- *
- * Copyright : Copyright (c) 2010 - 2013 All rights reserved.
- *
- * @author jianghua
- * @version 1.0
- */
- public class EmailServiceImpl implements EmailService {
- @Resource(name = "javaMailSender")
- private JavaMailSenderImpl javaMailSender;
- class EmailThread extends Thread {
- private final MimeMessage mimeMessage;
- public EmailThread(MimeMessage mimeMessage) {
- this.mimeMessage = mimeMessage;
- }
- @Override
- public void run() {
- javaMailSender.send(mimeMessage);
- }
- }
- @Override
- public void sendMail(String mailto, String fromEmail, String text,
- String title) throws Exception {
- fromEmail = javaMailSender.getUsername();
- MimeMessage mimeMessage = javaMailSender.createMimeMessage();
- MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,
- true, "UTF-8");
- messageHelper.setFrom(new InternetAddress(fromEmail));
- messageHelper.setSubject(title);
- messageHelper.setText(text, true);
- messageHelper.setTo(new InternetAddress(mailto));
- mimeMessage = messageHelper.getMimeMessage();
- EmailThread et = new EmailThread(mimeMessage);
- et.start();
- }
- @Override
- public void sendBatchMail(String[] mailto, String fromEmail, String text,
- String title) throws Exception {
- MimeMessage mimeMessage = javaMailSender.createMimeMessage();
- MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,
- true, "UTF-8");
- messageHelper.setFrom(new InternetAddress(fromEmail));
- messageHelper.setSubject(title);
- messageHelper.setText(text, true);
- List<InternetAddress> list = new ArrayList<InternetAddress>();
- for (int i = 0; i < mailto.length; i++) {
- list.add(new InternetAddress(mailto[i]));
- }
- InternetAddress[] address = list.toArray(new InternetAddress[list.size()]);
- mimeMessage.setRecipients(Message.RecipientType.TO, address);
- mimeMessage = messageHelper.getMimeMessage();
- EmailThread et = new EmailThread(mimeMessage);
- et.start();
- }
- @Override
- public void sendBatchMailWithFile(String[] mailto, String fromEmail,
- String text, String title, String[] filePath) throws Exception {
- MimeMessage mimeMessage = javaMailSender.createMimeMessage();
- MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,
- true, "UTF-8");
- messageHelper.setFrom(newInternetAddress(MimeUtility.
- encodeText(fromEmail)));
- messageHelper.setSubject(title);
- if (filePath != null) {
- // 新建一个存放信件内容的BodyPart对象
- BodyPart mdp = new MimeBodyPart();
- // 给BodyPart对象设置内容和格式/编码方式
- mdp.setContent(text, "text/html;charset=UTF-8");
- // 新建一个MimeMultipart对象用来存放BodyPart对象
- Multipart mm = new MimeMultipart();
- // 将BodyPart加入到MimeMultipart对象中(可以加入多个BodyPart)
- mm.addBodyPart(mdp);
- // 把mm作为消息对象的内容
- MimeBodyPart filePart;
- FileDataSource filedatasource;
- // 逐个加入附件
- for (int j = 0; j < filePath.length; j++) {
- filePart = new MimeBodyPart();
- filedatasource = new FileDataSource(filePath[j]);
- filePart.setDataHandler(new DataHandler(filedatasource));
- try {
- filePart.setFileName(MimeUtility.encodeText(
- filedatasource.getName()));
- } catch (Exception e) {
- e.printStackTrace();
- }
- mm.addBodyPart(filePart);
- }
- mimeMessage.setContent(mm);
- } else {
- messageHelper.setText(text, true);
- }
- List<InternetAddress> list = new ArrayList<InternetAddress>();
- for (int i = 0; i < mailto.length; i++) {
- list.add(new InternetAddress(mailto[i]));
- }
- InternetAddress[] address = list.toArray(new InternetAddress[list.size()]);
- mimeMessage.setRecipients(Message.RecipientType.TO, address);
- mimeMessage = messageHelper.getMimeMessage();
- EmailThread et = new EmailThread(mimeMessage);
- et.start();
- }
- 3.配置文件
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-2.5.xsd">
- <!-- 邮件发送 -->
- <bean name="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
- <!-- 主机,域名 -->
- <property name="host" value="smtpb.qianpin.com" />
- <!-- 编码格式 -->
- <property name="defaultEncoding" value="UTF-8"></property>
- <!-- 邮箱名 -->
- <property name="username" value="noreply@qianpin.com"></property>
- <!-- 密码 -->
- <property name="password" value="b4i4s0c9R0n1m1w9g"></property>
- <property name="javaMailProperties">
- <map>
- <entry key="mail.smtp.auth" value="true" />
- </map>
- </property>
- </bean>
- </beans>