`

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集成邮件服务则是一个常见的需求,特别是对于那些需要发送确认邮件、通知或者报告的应用来说。下面将详细阐述Spring如何与JavaMail API结合,实现邮件服务的集成。 首先,我们需要理解JavaMail API。...

    Spring邮件发送服务(java邮件发送)

    下面将详细阐述Spring邮件发送服务的核心概念和技术细节。 首先,我们需要配置SpringMail的相关设置。这通常通过一个XML配置文件完成,例如`springmail_config.xml`。在这个文件中,我们定义了邮件服务器的相关属性...

    spring邮件服务(java邮件发送)

    总的来说,Spring邮件服务提供了一种便捷的方式,让我们能够轻松地在Java应用中集成邮件发送功能。通过配置文件设置邮件服务器信息,然后通过工具类调用相应的API,我们可以实现复杂邮件的发送,包括多附件、多收件...

    spring中邮件及定时任务

    Spring通过JavaMailSender接口提供了一种简单易用的方式来发送邮件。为了使用这个功能,你需要在配置文件中配置JavaMailSender,包括SMTP服务器的地址、端口、用户名和密码。同时,你可以设置邮件的From、To、...

    spring各种邮件发送

    最后,`JavaMailSender`接口和相关的邮件服务支持使得Spring成为开发中实现邮件功能的强大工具。结合源码阅读和实际应用,开发者可以更深入地理解和掌握Spring框架的邮件发送功能,提升工作效率。对于那些需要发送...

    邮件微服务平台接口文档

    标题中的“邮件微服务平台接口文档”指的是一个使用Spring Boot框架开发的微服务应用,该应用专注于提供邮件发送功能。这个微服务提供了API接口,允许其他系统或应用与其交互,实现邮件的发送,包括可能支持多附件的...

    Spring邮件发送

    总结起来,Spring邮件发送功能通过`JavaMailSender`接口提供了灵活且强大的邮件服务集成。开发者可以根据需求配置SMTP服务器信息,创建邮件并发送,甚至处理复杂格式的邮件,如HTML邮件和带附件的邮件。这使得在Java...

    Spring邮件发送源码

    首先,让我们来了解如何配置Spring邮件服务。在Spring的配置文件(如`applicationContext.xml`)中,我们需要定义一个`JavaMailSender` bean。这个bean通常会包含SMTP服务器的信息,如主机名、端口号、用户名和密码...

    java发送邮件 spring发送邮件

    总的来说,Spring框架提供了强大的邮件发送支持,通过`JavaMailSender`接口和相关辅助类,开发者可以方便地实现各种邮件功能,无论是简单的文本邮件还是包含复杂格式和附件的邮件。在实际项目中,确保正确配置SMTP...

    java 发送邮件 spring发送邮件Mail

    Spring框架提供了一种优雅的方式来处理这个任务,它整合了JavaMailSender接口和JavaMail API,使得在Java应用程序中发送邮件变得更加简单。让我们深入探讨这个主题。 首先,JavaMail API是Java用来处理邮件收发的...

    spring邮件抽象层详解

    Spring邮件抽象层是Spring框架提供的一套用于发送电子邮件的高级接口,它隐藏了与底层邮件系统交互的复杂性,使得开发者能够以一种简洁的方式发送邮件。这个抽象层主要包含在`org.springframework.mail`包中,提供了...

    SendMail_java.rar_java call_java 邮件_spring 邮件_spring邮件_邮件

    在Spring框架中,我们可以利用`JavaMailSender`接口来发送电子邮件。为了使用这个接口,我们需要在Spring配置文件中定义一个bean,如下所示: ```xml &lt;bean id="mailSender" class="org.springframework.mail....

    spring发送邮件demo

    配置完成后,我们可以通过Spring的`JavaMailSender`接口来发送邮件。下面是一个简单的发送邮件的示例代码: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework....

    基于java spring邮件群发的demo

    在这个"基于Java Spring邮件群发的demo"中,我们将探讨如何利用Spring框架的邮件服务模块实现高效的邮件群发功能。同时,这个项目还涉及到了MySQL数据库和MyBatis持久层框架,这三者共同构成了一个完整的数据驱动的...

    maven3搭建的spring邮件项目

    综上所述,这个项目提供了一个基础的邮件服务模板,开发者可以通过调整Maven配置和Spring邮件服务设置,快速地将邮件功能集成到自己的项目中,无需从零开始编写代码。对于初学者和需要快速实现邮件功能的项目来说,...

    Spring 高效批量邮件发送

    在本话题中,我们将探讨“Spring高效批量邮件发送”这一技术点,这通常涉及到Spring框架中的邮件服务模块以及如何优化邮件发送的效率。 首先,Spring框架的MailSender接口是处理邮件发送的核心组件。它提供了send()...

    spring boot+mail邮件服务学习demo项目源码

    本项目是关于Spring Boot结合Spring封装的Mail服务的一个学习demo,旨在帮助开发者掌握如何在Spring Boot应用中实现邮件服务功能。下面将详细介绍这个项目涉及的核心知识点。 1. **Spring Boot简介** Spring Boot...

    Spring 使用163发邮件带附件

    压缩文件名"Spring08MailSpring2"可能表示这是一个关于Spring邮件发送的系列教程的第八部分,或者可能是某个特定版本的示例代码。如果文件中包含源码,你可以期待找到一个完整的配置示例,以及如何创建和发送带附件...

Global site tag (gtag.js) - Google Analytics