Spring 发送邮件

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="[email protected]"></property>
     <!-- 密码 -->
     <property name="password" value="b4i4s0c9R0n1m1w9g"></property>
     <property name="javaMailProperties">
        <map>
          <entry key="mail.smtp.auth" value="true" />
        </map>
     </property>
     </bean>
</beans>

猜你喜欢

转载自adolph-jianghua.iteye.com/blog/1984941
今日推荐