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"的组合,结合Freemarker模板引擎,提供一个完整的发送邮件的Demo。 首先,我们需要在项目中添加相关的依赖。Spring框架通常与Spring Boot一起使用,这样可以简化配置。在`pom.xml`或`...
在本场景中,我们将利用Spring来管理JavaMail Sender对象,以便于发送邮件。 #### Velocity模板引擎 Velocity是一个基于Java的模板引擎,它允许开发者通过简单的模板语言来生成HTML网页、XML数据或者普通的文本。在...
Spring提供了`JavaMailSender`接口,该接口提供了发送邮件的基本方法,如`send(Message message)`。你可以通过配置Spring的`mail.properties`文件来设置SMTP服务器的相关信息,如主机地址、端口、用户名和密码等。...
`SendService`中的`uploadAttachment`方法会将这些文件保存到服务器的某个路径,并将文件路径存储在`Mail`对象中,以便在发送邮件时附上附件。 为了适应不同的数据库环境,如本例中的SQL Server,Mybatis的配置文件...
然后,可以创建一个服务类,该类包含发送邮件的方法,使用`JavaMailSender`接口的`send()`方法。 5. **邮件模板** 在这个项目中,可能会涉及到不同类型的邮件,比如HTML邮件、文本邮件等。Spring Mail支持创建复杂...
项目主要是使用 Spring Boot 发送邮件,主要的技术点有: 1、Spring Boot +mybatis的整合 2、Spring Boot项目中jsp的使用 3、Spring Boot 发送邮件(文本格式的邮件、发送HTML格式的邮件、发送带附件 的邮件、...
标题中的“spring mail通过代理发送邮件”涉及到的是Spring框架中处理电子邮件发送的功能,尤其是在网络环境有限制或需要通过代理服务器的情况下。Spring Mail是Spring Framework的一个扩展模块,它提供了与JavaMail...
本项目“spring+quartz+javamail定时发送邮件”结合了Spring框架、Quartz调度器以及JavaMail API,构建了一个能够定时发送邮件的系统。以下将详细介绍这三个关键组件及其整合方式。 首先,Spring框架是一个广泛使用...
### Spring Mail 发送邮件实例详解 #### 一、Spring Mail 概述 Spring Mail 是 Spring 框架中用于处理电子邮件发送的一个模块。它提供了一种简单的方式来进行邮件的发送,支持多种邮件发送协议,例如 SMTP 等,...
Spring框架提供了一种优雅的方式来处理这个任务,它整合了JavaMailSender接口和JavaMail API,使得在Java应用程序中发送邮件变得更加简单。让我们深入探讨这个主题。 首先,JavaMail API是Java用来处理邮件收发的...
4. 配置JavaMail API,包括SMTP服务器信息、认证凭证等,以便发送邮件。 5. 在代码中,当需要触发工作流程或发送邮件时,调用相应API进行操作。 这个集成项目展示了如何利用现代Java技术栈实现复杂的业务逻辑,同时...
下面将详细介绍如何使用Spring发送邮件。 首先,我们需要在项目中引入Spring的邮件支持。这通常通过添加`spring-context-support`依赖来完成,该依赖包含了处理邮件发送所需的类。在Maven项目中,可以在pom.xml文件...
使用Spring mail发送邮件的完整实例,包含代码与Spring mail的jar,可直接运行与使用。相关学习文档参考博客《Spring Mail邮件发送 http://blog.csdn.net/chenxiang0207/article/details/8256528》。
Java发送邮件是软件开发中常见的功能,Spring框架提供了一种优雅的方式来实现这一需求。Spring框架以其模块化和灵活性而著名,它包含了一个名为`JavaMailSender`的接口,专门用于处理电子邮件的发送。在这个场景中,...
本篇将深入探讨如何使用Spring Mail发送邮件,以及它背后的实现原理。 首先,我们需要在项目中引入Spring Mail的依赖。通常,这可以通过Maven或Gradle来完成。对于Maven用户,可以在pom.xml文件中添加以下依赖: `...
首先,Spring框架提供了`JavaMailSender`接口,它是发送邮件的核心接口。通过实现这个接口,我们可以配置SMTP服务器的相关参数,如主机地址、端口、用户名、密码等,来设置邮件发送的环境。`JavaMailSender`提供了...
在Spring Cloud框架中,我们可以利用`spring-cloud-starter-mail`模块来发送邮件。首先,需要在`pom.xml`文件中引入依赖: ```xml <groupId>org.springframework.cloud <artifactId>spring-cloud-starter-mail ...
4. **发送邮件**: 使用SpringMail发送邮件主要包括两个步骤:创建`SimpleMailMessage`实例(用于设置收件人、主题、正文等基本信息)和调用`MailSender`的`send()`方法。如果要发送带有附件的邮件,我们需要使用`...