javaMail 测试

 
 
1、服务接口
Java代码 复制代码  收藏代码
  1. package com.*.email.service;  
  2.   
  3. /** 
  4.  * Description : 邮件相关服务接口.  
  5.  
  6.  * Create Time : 2013年12月2日 上午10:08:42  
  7.  
  8.  * Copyright : Copyright (c) 2010 - 2013 All rights reserved.  
  9.  
  10.  *  
  11.  * @author Mr Yan 
  12.  * @version 1.0 
  13.  */  
  14. public interface EmailService {  
  15.   
  16.       
  17.     /** 
  18.      * 发送邮件 
  19.      * @param mailto        收件邮箱 
  20.      * @param fromEmail     发送邮箱 
  21.      * @param text          内容 
  22.      * @param title         标题 
  23.      * @throws Exception 
  24.      */  
  25.     public void sendMail(String mailto, String fromEmail, String text, String title) throws Exception;  
  26.   
  27.   
  28.     /** 
  29.      * 批量下发邮件 
  30.      * @param mailto        收件邮箱 
  31.      * @param fromEmail     发送邮箱 
  32.      * @param text          内容 
  33.      * @param title         标题 
  34.      * @throws Exception 
  35.      */  
  36.     public void sendBatchMail(String[] mailto, String fromEmail, String text, String title) throws Exception;  
  37.   
  38.       
  39.     /** 
  40.      * 批量下发邮件待附件 
  41.      * @param mailto        收件邮箱 
  42.      * @param fromEmail     发送邮箱 
  43.      * @param text          内容 
  44.      * @param title         标题 
  45.      * @param filePath      附件 
  46.      * @throws Exception 
  47.      */  
  48.     public void sendBatchMailWithFile(String[] mailto, String fromEmail, String text, String title, String[] filePath) throws Exception;  
  49.   
  50. }  
package com.*.email.service;

/**
 * Description : 邮件相关服务接口. 

 * Create Time : 2013年12月2日 上午10:08:42 

 * Copyright : Copyright (c) 2010 - 2013 All rights reserved. 

 * 
 * @author Mr Yan
 * @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、服务接口实现
Java代码 复制代码  收藏代码
  1. package com.*.email.service.impl;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import javax.activation.DataHandler;  
  7. import javax.activation.FileDataSource;  
  8. import javax.annotation.Resource;  
  9. import javax.mail.BodyPart;  
  10. import javax.mail.Message;  
  11. import javax.mail.Multipart;  
  12. import javax.mail.internet.InternetAddress;  
  13. import javax.mail.internet.MimeBodyPart;  
  14. import javax.mail.internet.MimeMessage;  
  15. import javax.mail.internet.MimeMultipart;  
  16. import javax.mail.internet.MimeUtility;  
  17.   
  18. import org.springframework.mail.javamail.JavaMailSenderImpl;  
  19. import org.springframework.mail.javamail.MimeMessageHelper;  
  20. import org.springframework.stereotype.Service;  
  21.   
  22. import com.*.email.service.EmailService;  
  23.   
  24. /** 
  25.  * Description : 邮件相关服务接口实现.  
  26.  
  27.  * Create Time : 2013年12月2日 上午10:10:25  
  28.  
  29.  * Copyright : Copyright (c) 2010 - 2013 All rights reserved.  
  30.  
  31.  *  
  32.  * @author Mr Yan 
  33.  * @version 1.0 
  34.  */  
  35. @Service  
  36. public class EmailServiceImpl implements EmailService{  
  37.       
  38.     @Resource(name = "javaMailSender")  
  39.     private JavaMailSenderImpl javaMailSender;  
  40.   
  41.     class EmailThread extends Thread {  
  42.         private final MimeMessage mimeMessage;  
  43.         public EmailThread(MimeMessage mimeMessage) {  
  44.             this.mimeMessage = mimeMessage;  
  45.         }  
  46.         @Override  
  47.         public void run() {  
  48.             javaMailSender.send(mimeMessage);  
  49.         }  
  50.   
  51.     }  
  52.   
  53.     @Override  
  54.     public void sendMail(String mailto, String fromEmail, String text, String title) throws Exception {  
  55.         fromEmail = javaMailSender.getUsername();  
  56.           
  57.         MimeMessage mimeMessage = javaMailSender.createMimeMessage();  
  58.         MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true"UTF-8");  
  59.         messageHelper.setFrom(new InternetAddress(fromEmail));  
  60.         messageHelper.setSubject(title);  
  61.         messageHelper.setText(text, true);  
  62.         messageHelper.setTo(new InternetAddress(mailto));  
  63.         mimeMessage = messageHelper.getMimeMessage();  
  64.   
  65.         EmailThread et = new EmailThread(mimeMessage);  
  66.         et.start();  
  67.   
  68.     }  
  69.   
  70.     @Override  
  71.     public void sendBatchMail(String[] mailto, String fromEmail, String text, String title) throws Exception {  
  72.           
  73.         MimeMessage mimeMessage = javaMailSender.createMimeMessage();  
  74.         MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true"UTF-8");  
  75.         messageHelper.setFrom(new InternetAddress(fromEmail));  
  76.         messageHelper.setSubject(title);  
  77.         messageHelper.setText(text, true);  
  78.   
  79.         List<InternetAddress> list = new ArrayList<InternetAddress>();  
  80.         for (int i = 0; i < mailto.length; i++) {  
  81.             list.add(new InternetAddress(mailto[i]));  
  82.         }  
  83.         InternetAddress[] address = list.toArray(new InternetAddress[list.size()]);  
  84.         mimeMessage.setRecipients(Message.RecipientType.TO, address);  
  85.         mimeMessage = messageHelper.getMimeMessage();  
  86.   
  87.         EmailThread et = new EmailThread(mimeMessage);  
  88.         et.start();  
  89.     }  
  90.   
  91.     @Override  
  92.     public void sendBatchMailWithFile(String[] mailto, String fromEmail, String text, String title, String[] filePath) throws Exception {  
  93.           
  94.         MimeMessage mimeMessage = javaMailSender.createMimeMessage();  
  95.         MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true"UTF-8");  
  96.         messageHelper.setFrom(new InternetAddress(MimeUtility.encodeText(fromEmail)));  
  97.         messageHelper.setSubject(title);  
  98.         if (filePath != null) {  
  99.             BodyPart mdp = new MimeBodyPart();// 新建一个存放信件内容的BodyPart对象  
  100.             mdp.setContent(text, "text/html;charset=UTF-8");// 给BodyPart对象设置内容和格式/编码方式  
  101.             Multipart mm = new MimeMultipart();// 新建一个MimeMultipart对象用来存放BodyPart对象  
  102.             mm.addBodyPart(mdp);// 将BodyPart加入到MimeMultipart对象中(可以加入多个BodyPart)  
  103.             // 把mm作为消息对象的内容  
  104.             MimeBodyPart filePart;  
  105.             FileDataSource filedatasource;  
  106.             // 逐个加入附件  
  107.             for (int j = 0; j < filePath.length; j++) {  
  108.                 filePart = new MimeBodyPart();  
  109.                 filedatasource = new FileDataSource(filePath[j]);  
  110.                 filePart.setDataHandler(new DataHandler(filedatasource));  
  111.                 try {  
  112.                     filePart.setFileName(MimeUtility.encodeText(filedatasource.getName()));  
  113.                 } catch (Exception e) {  
  114.                     e.printStackTrace();  
  115.                 }  
  116.                 mm.addBodyPart(filePart);  
  117.             }  
  118.             mimeMessage.setContent(mm);  
  119.         } else {  
  120.             messageHelper.setText(text, true);  
  121.         }  
  122.   
  123.         List<InternetAddress> list = new ArrayList<InternetAddress>();  
  124.         for (int i = 0; i < mailto.length; i++) {  
  125.             list.add(new InternetAddress(mailto[i]));  
  126.         }  
  127.         InternetAddress[] address = list.toArray(new InternetAddress[list.size()]);  
  128.   
  129.         mimeMessage.setRecipients(Message.RecipientType.TO, address);  
  130.         mimeMessage = messageHelper.getMimeMessage();  
  131.   
  132.         EmailThread et = new EmailThread(mimeMessage);  
  133.         et.start();  
  134.     }  
  135. }  
package com.*.email.service.impl;

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;
import org.springframework.stereotype.Service;

import com.*.email.service.EmailService;

/**
 * Description : 邮件相关服务接口实现. 

 * Create Time : 2013年12月2日 上午10:10:25 

 * Copyright : Copyright (c) 2010 - 2013 All rights reserved. 

 * 
 * @author Mr Yan
 * @version 1.0
 */
@Service
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(new InternetAddress(MimeUtility.encodeText(fromEmail)));
		messageHelper.setSubject(title);
		if (filePath != null) {
			BodyPart mdp = new MimeBodyPart();// 新建一个存放信件内容的BodyPart对象
			mdp.setContent(text, "text/html;charset=UTF-8");// 给BodyPart对象设置内容和格式/编码方式
			Multipart mm = new MimeMultipart();// 新建一个MimeMultipart对象用来存放BodyPart对象
			mm.addBodyPart(mdp);// 将BodyPart加入到MimeMultipart对象中(可以加入多个BodyPart)
			// 把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、服务配置
Java代码 复制代码  收藏代码
  1. <bean name="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">  
  2.         <property name="host" value="smtp.163.com" />  
  3.         <property name="defaultEncoding" value="UTF-8"></property>  
  4.         <property name="username" value="[email protected]"></property>  
  5.         <property name="password" value="password"></property>  
  6.         <property name="javaMailProperties">  
  7.             <map>  
  8.                 <entry key="mail.smtp.auth" value="true" />  
  9.             </map>  
  10.         </property>         
  11.     </bean>  
<bean name="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
		<property name="host" value="smtp.163.com" />
		<property name="defaultEncoding" value="UTF-8"></property>
		<property name="username" value="[email protected]"></property>
		<property name="password" value="password"></property>
		<property name="javaMailProperties">
			<map>
				<entry key="mail.smtp.auth" value="true" />
			</map>
		</property>		
	</bean>

猜你喜欢

转载自jyangzi5.iteye.com/blog/1983817