`

Spring 邮件相关服务接口

阅读更多
1、服务接口
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、服务接口实现
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、服务配置
<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="username@163.com"></property>
		<property name="password" value="password"></property>
		<property name="javaMailProperties">
			<map>
				<entry key="mail.smtp.auth" value="true" />
			</map>
		</property>		
	</bean>


1
0
分享到:
评论

相关推荐

    spring各种邮件发送

    Spring邮件抽象层的主要包为org.springframework.mail。它包括了发送电子邮件的主要接口MailSender,和值对象SimpleMailMessage,它封装了简单邮件的属性如from, to,cc, subject,text。 包里还包含一棵以...

    邮件微服务平台接口文档

    使用Spring Boot 开发支持多附件邮件发送微服务平台接口文档,里面详细记录了接口请求参数和事项

    spring-boot-邮件发送

    Spring Boot通过集成spring-boot-starter-mail依赖和相关配置,可以方便地实现邮件发送功能。具体的步骤: 添加依赖:在Spring Boot项目的pom.xml文件中加入spring-boot-starter-mail依赖,如果需要发送模板邮件,还...

    spring4.3.9相关jar包

    spring-context.jar(必须):这个jar 文件在基础IOC功能上为Spring 核心提供了大量扩展服务,此外还提供许多企业级服务的支持,有邮件服务、任务调度、JNDI定位,EJB集成、远程访问、缓存以及多种视图层框架的支持...

    spring4.1核心包

    11.spring-jms-4.1.1.RELEASE.jar 简单封装jms api接口 jms: Java消息服务(Java Message Service)应用程序接口 12. spring-messaging-4.1.1.RELEASE.jar 消息发送 13. spring-orm-4.1.1.RELEASE.jar 14. spring-...

    Spring Boot整合JavaMailSender发送电子邮件

    Spring提供了非常好用的JavaMailSender接口实现邮件发送。在Spring Boot的Starter模块中也为此提供了自动化配置。下面通过实例看看如何在Spring Boot中使用JavaMailSender发送邮件。

    Spring 2.0 开发参考手册

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP...

    Spring-Reference_zh_CN(Spring中文参考手册)

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 5.4.2.1. 注册用户自定义的PropertyEditor ...

    spring-boot示例项目

    redis(redis缓存)、quartz(集群任务实现)、shiro(权限管理)、oauth2(四种认证模式)、shign(接口参数防篡改重放)、encoder(用户密码设计)、actuator(服务监控)、cloud-config(配置中心)、cloud-gateway...

    spring chm文档

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP...

    Spring中文帮助文档

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP...

    Spring API

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP...

    Spring Boot中利用JavaMailSender发送邮件的方法示例(附源码)

    主要介绍了Spring Boot中利用JavaMailSender发送邮件的方法示例, 相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送。在Spring Boot的Starter模块中也为此提供了自动化配置...

    spring4.3.2参考文档(英文)

    Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。 Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring ...

    微信扫一扫登录、微信支付、springsecurity&oauth2

    项目中使用到的技术包含SpringBoot、SpringSecurity&oauth2(安全资源和授权中心模式、包括登录接口自定义返回字段、自定义手机号+密码登录、自定义免密登录)、Queue队列、线程池、xss攻击配置、SpringCache、Mybatis...

    leetcode安卓-spring-mail-sender:SpringBoot实现的邮件发送接口API,提供邮件发送服务

    由于的需求,实现了一个小的邮件发送接口服务,使用了一个单独的SpringBoot项目,给他取名为spring-mail-sender,开源在了Github上。内部我给他命名为提醒服务,因为未来希望还能扩展下,用来做短信发送服务,或者...

    Spring攻略(第二版 中文高清版).part1

    10.6 使用BlazeDS和Spring消费面向消息的服务 421 10.6.1 问题 421 10.6.2 解决方案 422 10.6.3 工作原理 422 10.7 将依赖注入带给你的ActionScript客户 434 10.7.1 问题 434 10.7.2 解决方案 434 ...

    基于java的企业级应用开发:Spring AOP简介.ppt

    Context-support模块:提供了对第三方库嵌入Spring应用的集成支持,比如缓存(EhCache、Guava、JCache)、邮件服务(JavaMail)、任务调度(CommonJ、Quartz)和模板引擎(FreeMarker、JasperReports、速率)。 SpEL模块:...

    J2EE spring mvc mybatis bootstrap HTML5 后台框架 控制台 mysql版本_spring3.0

    【源码】mysql版本_spring3.0 系统模块 1. 组织管理:角色管理,分角色组和成员,有组权限和成员权限。 2. 系统用户:对各个基本的组会员增删改查,单发、群发邮件短信,导入导出excel表格,批量删除 3. 会员管理:...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    1.4.7 JavaMail(Java邮件服务) 1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍...

Global site tag (gtag.js) - Google Analytics