`

Spring+Mail发送邮件

阅读更多

   Spring+Mail常用类:

MailSend
 接口,只支持文本和HTML -->JavaMailSenderImpl
JavaMailSender  接口,支持文本和HTML,附件->JavaMailSenderImpl
MimeMessage  发送普通邮件消息类
MimeMessageHelper  发送附件邮件消息类
freemarker.template.Configuration FreeMarkerConfigurationFactoryBean(实现)

 

   Spring+Mail发送邮件:

package com.spring.email;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;

import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;

import freemarker.template.Configuration;
import freemarker.template.Template;

public class Mail {

	/**
	 * java 发送邮件 
	 * org.springframework.mail.javamail.JavaMailSender 接口
	 */
	private JavaMailSender mailSender;
	
	/**
	 * FreeMarker 配置
	 */
	private Configuration config;

	/**
	 * 获取
	 * 使用模板发邮件
	 * @param fileName 模板名称
	 * @param molde 动态对象
	 * @return 模板 文本、HTML
	 * @throws Exception
	 */
	public String getTemplateText(String fileName,Object... molde) throws Exception{
		Map<String,Object> map = new HashMap<String,Object>();
		for (Object object : molde) {
			String name = object.getClass().getSimpleName();
			name = name.replaceFirst(name.substring(0, 1), name.substring(0, 1).toLowerCase());
			map.put(name,object);
		}
		Template template = config.getTemplate(fileName);
		return FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
	}
	
	/**
	 * 发送邮件
	 * @param bean 邮件属性
	 * @throws MessagingException
	 * @throws UnsupportedEncodingException 
	 */
	public void send(MailBean bean) throws MessagingException, UnsupportedEncodingException{
		MimeMessage msg = mailSender.createMimeMessage();
		MimeMessageHelper helper = new MimeMessageHelper(msg,true,"UTF-8");
		msg.setSubject(bean.getSubject());
		helper.setSentDate(bean.getDate());
		helper.setText(bean.getText());
		helper.setReplyTo(bean.getRelyTO());
		helper.setFrom(bean.getFrom());
		for (File file : bean.getFiles()) {
			helper.addAttachment(MimeUtility.encodeWord(file.getName()), file);
		}
		for (String bcc : bean.getBcc()) {
			helper.addBcc(bcc);
		}
		for (String cc : bean.getCc()) {
			helper.addBcc(cc);
		}
		for (String to : bean.getTos()) {
			helper.addTo(to);
		}
		mailSender.send(msg);
	}
	
	/**
	 * 发送邮件  HTML 格式
	 * @param bean 邮件属性
	 * @throws MessagingException
	 * @throws UnsupportedEncodingException 
	 */
	public void sendHTML(MailBean bean) throws MessagingException, UnsupportedEncodingException{
		MimeMessage msg = mailSender.createMimeMessage();
		MimeMessageHelper helper = new MimeMessageHelper(msg,true,"UTF-8");
		msg.setSubject(bean.getSubject());
		helper.setSentDate(bean.getDate());
		helper.setText(bean.getText(),true);
		helper.setReplyTo(bean.getRelyTO());
		helper.setFrom(bean.getFrom());
		for (File file : bean.getFiles()) {
			helper.addAttachment(MimeUtility.encodeWord(file.getName()), file);
		}
		for (String bcc : bean.getBcc()) {
			helper.addBcc(bcc);
		}
		for (String cc : bean.getCc()) {
			helper.addBcc(cc);
		}
		for (String to : bean.getTos()) {
			helper.addTo(to);
		}
		mailSender.send(msg);
	}
	
	/**
	 * 发送邮件  HTML模板 格式
	 * @param bean 邮件属性
	 * @throws MessagingException
	 * @throws UnsupportedEncodingException 
	 */
	public void sendTemplate(MailBean bean,String fileName,Object... molder) throws Exception{
		MimeMessage msg = mailSender.createMimeMessage();
		MimeMessageHelper helper = new MimeMessageHelper(msg,true,"UTF-8");
		msg.setSubject(bean.getSubject());
		helper.setSentDate(bean.getDate());
		helper.setText(getTemplateText(fileName,molder),true);
		helper.setReplyTo(bean.getRelyTO());
		helper.setFrom(bean.getFrom());
		for (File file : bean.getFiles()) {
			helper.addAttachment(MimeUtility.encodeWord(file.getName()), file);
		}
		for (String bcc : bean.getBcc()) {
			helper.addBcc(bcc);
		}
		for (String cc : bean.getCc()) {
			helper.addBcc(cc);
		}
		for (String to : bean.getTos()) {
			helper.addTo(to);
		}
		mailSender.send(msg);
	}
	
	public JavaMailSender getMailSender() {
		return mailSender;
	}

	public void setMailSender(JavaMailSender mailSender) {
		this.mailSender = mailSender;
	}

	public Configuration getConfig() {
		return config;
	}

	public void setConfig(Configuration config) {
		this.config = config;
	}
}

   实体类 MailBean:

package com.spring.email;

import java.io.File;
import java.util.Date;

public class MailBean {

	private String from;
	
	private String[] tos = {};
	
	private String[] bcc = {};
	
	private String[] cc = {};
	
	private String relyTO;
	
	private String text;
	
	private String subject;
	
	private Date date;
	
	private File[] files = {}; 
//省略 getter,setter
}

 

   Spring XML 配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
	<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
		<property name="port" value="25"/>
		<property name="protocol" value="smtp"/>
		<property name="host" value="123.com"/>
		<property name="username" value="111111"/>
		<property name="password" value="111111"/>
		<property name="defaultEncoding" value="utf-8"/>
		<property name="javaMailProperties">
			<props>
				<prop key="mail.smtp.auth">true</prop>
			</props>
		</property>
	</bean>
	<bean id="freeMarkerConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
		<property name="freemarkerSettings">
			<props>
				<prop key="default_encoding">UTF-8</prop>
				<prop key="template_update_delay">600000</prop>
			</props>
		</property>
		<property name="templateLoaderPath" value="com/spring/freemaker"/>
	</bean>
	<bean class="com.spring.email.Mail">
		<property name="mailSender" ref="javaMailSender"/>
		<property name="config" ref="freeMarkerConfiguration"/>
	</bean>
	<bean id="dateFormat" class="java.text.SimpleDateFormat">
		<constructor-arg value="yyyy-MM-dd"/>
	</bean>
</beans>

 

分享到:
评论

相关推荐

    spring + mail + 发送邮件完整 demo (含注释)

    本教程将围绕"Spring + Mail"的组合,结合Freemarker模板引擎,提供一个完整的发送邮件的Demo。 首先,我们需要在项目中添加相关的依赖。Spring框架通常与Spring Boot一起使用,这样可以简化配置。在`pom.xml`或`...

    spring+velocity发送邮件

    在本场景中,我们将利用Spring来管理JavaMail Sender对象,以便于发送邮件。 #### Velocity模板引擎 Velocity是一个基于Java的模板引擎,它允许开发者通过简单的模板语言来生成HTML网页、XML数据或者普通的文本。在...

    简单学习使用Spring+Velocity发送邮件

    Spring提供了`JavaMailSender`接口,该接口提供了发送邮件的基本方法,如`send(Message message)`。你可以通过配置Spring的`mail.properties`文件来设置SMTP服务器的相关信息,如主机地址、端口、用户名和密码等。...

    struts2+spring3.0+mybatis3.0.4集成的邮件发送实例(可上传附件)

    `SendService`中的`uploadAttachment`方法会将这些文件保存到服务器的某个路径,并将文件路径存储在`Mail`对象中,以便在发送邮件时附上附件。 为了适应不同的数据库环境,如本例中的SQL Server,Mybatis的配置文件...

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

    然后,可以创建一个服务类,该类包含发送邮件的方法,使用`JavaMailSender`接口的`send()`方法。 5. **邮件模板** 在这个项目中,可能会涉及到不同类型的邮件,比如HTML邮件、文本邮件等。Spring Mail支持创建复杂...

    Spring Boot整合邮件发送并保存历史发送邮箱

    项目主要是使用 Spring Boot 发送邮件,主要的技术点有: 1、Spring Boot +mybatis的整合 2、Spring Boot项目中jsp的使用 3、Spring Boot 发送邮件(文本格式的邮件、发送HTML格式的邮件、发送带附件 的邮件、...

    spring mail通过代理发送邮件

    标题中的“spring mail通过代理发送邮件”涉及到的是Spring框架中处理电子邮件发送的功能,尤其是在网络环境有限制或需要通过代理服务器的情况下。Spring Mail是Spring Framework的一个扩展模块,它提供了与JavaMail...

    spring+quartz+javamail定时发送邮件

    本项目“spring+quartz+javamail定时发送邮件”结合了Spring框架、Quartz调度器以及JavaMail API,构建了一个能够定时发送邮件的系统。以下将详细介绍这三个关键组件及其整合方式。 首先,Spring框架是一个广泛使用...

    Spring mail发送邮件实例

    ### Spring Mail 发送邮件实例详解 #### 一、Spring Mail 概述 Spring Mail 是 Spring 框架中用于处理电子邮件发送的一个模块。它提供了一种简单的方式来进行邮件的发送,支持多种邮件发送协议,例如 SMTP 等,...

    java 发送邮件 spring发送邮件Mail

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

    spring + activiti + slf4j + mail

    4. 配置JavaMail API,包括SMTP服务器信息、认证凭证等,以便发送邮件。 5. 在代码中,当需要触发工作流程或发送邮件时,调用相应API进行操作。 这个集成项目展示了如何利用现代Java技术栈实现复杂的业务逻辑,同时...

    spring发送邮件demo

    下面将详细介绍如何使用Spring发送邮件。 首先,我们需要在项目中引入Spring的邮件支持。这通常通过添加`spring-context-support`依赖来完成,该依赖包含了处理邮件发送所需的类。在Maven项目中,可以在pom.xml文件...

    Spring mail发送邮件

    使用Spring mail发送邮件的完整实例,包含代码与Spring mail的jar,可直接运行与使用。相关学习文档参考博客《Spring Mail邮件发送 http://blog.csdn.net/chenxiang0207/article/details/8256528》。

    java发送邮件 spring发送邮件

    Java发送邮件是软件开发中常见的功能,Spring框架提供了一种优雅的方式来实现这一需求。Spring框架以其模块化和灵活性而著名,它包含了一个名为`JavaMailSender`的接口,专门用于处理电子邮件的发送。在这个场景中,...

    Spring mail 发送邮件

    本篇将深入探讨如何使用Spring Mail发送邮件,以及它背后的实现原理。 首先,我们需要在项目中引入Spring Mail的依赖。通常,这可以通过Maven或Gradle来完成。对于Maven用户,可以在pom.xml文件中添加以下依赖: `...

    spring各种邮件发送

    首先,Spring框架提供了`JavaMailSender`接口,它是发送邮件的核心接口。通过实现这个接口,我们可以配置SMTP服务器的相关参数,如主机地址、端口、用户名、密码等,来设置邮件发送的环境。`JavaMailSender`提供了...

    java发送邮件(两种方式-springcloud方式+静态调用方式).zip

    在Spring Cloud框架中,我们可以利用`spring-cloud-starter-mail`模块来发送邮件。首先,需要在`pom.xml`文件中引入依赖: ```xml &lt;groupId&gt;org.springframework.cloud &lt;artifactId&gt;spring-cloud-starter-mail ...

    使用springMail发送带附件的email

    4. **发送邮件**: 使用SpringMail发送邮件主要包括两个步骤:创建`SimpleMailMessage`实例(用于设置收件人、主题、正文等基本信息)和调用`MailSender`的`send()`方法。如果要发送带有附件的邮件,我们需要使用`...

Global site tag (gtag.js) - Google Analytics