Spring发送邮件总结(附源码)

做项目用到自动发邮件功能,网上查阅很多没有给出特别详细的说明,需要自己去探索,做了很多弯路。

在此给大家分享1下自己的代码:

360网盘下载地址:http://yunpan.cn/cJzDQ3gVUHBxY  访问密码 8221


使用时 请将Spring 配置文件里的  用户名、密码、邮箱服务器 还有端口 进行修改如果不是 yeah邮箱。

如果使用maven项目:

Pom.xml

 

添加的内容

<!– Spring3 –>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>

<!– Spring Email –>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>

<!– Javamail API –>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.4</version>
</dependency>

如果直接导入JAR方式 ,需要引入以下JAR包

EmailUtil

package com.bookmarksClouds.util;

import java.io.File;

import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
@Component("simpleMail")
public class EmailUtil
{

private JavaMailSender javaMailSender;
private SimpleMailMessage simpleMailMessage;

/**
*
* @方法名: sendMail
* @参数名:@param subject 邮件主题
* @参数名:@param content 邮件主题内容
* @参数名:@param to 收件人Email地址
* @param isHtml 是不是是html格式(发送html时使用utf⑻编码)
* @描写语: 发送邮件
* @throws MessagingException 发送产生了异常
*/
public void sendMail(String subject, String content,boolean isHtml, String to) throws MessagingException
{

MimeMessage mimeMessage = javaMailSender.createMimeMessage();

MimeMessageHelper messageHelper =null;
if(isHtml)
{
messageHelper = new MimeMessageHelper(mimeMessage,true,"UTF⑻");
}
else
{
messageHelper = new MimeMessageHelper(mimeMessage,true);
}
messageHelper.setFrom(simpleMailMessage.getFrom()); //设置发件人Email
messageHelper.setSubject(subject); //设置邮件主题
if(isHtml)
{
messageHelper.setText(content,true); //设置邮件主题内容(html格式)
}
else
{
messageHelper.setText(content); //设置邮件主题内容
}

messageHelper.setTo(to); //设定收件人Email

javaMailSender.send(mimeMessage);
}

/**
* 发送邮件 (包括附件)
* @param subject 主题
* @param content 内容
* @param fileAttachment 附件文件
* @param isHtml 内容是不是是html格式
* @param to 发送的邮箱地址
* @throws MessagingException 发送邮件异常(失败)
*/
public void sendMail(String subject, String content,boolean isHtml, File fileAttachment,String to) throws MessagingException
{

MimeMessage mimeMessage = javaMailSender.createMimeMessage();

MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true,"UTF⑻");

messageHelper.setFrom(simpleMailMessage.getFrom()); //设置发件人Email
messageHelper.setSubject(subject); //设置邮件主题

if(isHtml)
{
messageHelper.setText(content,true); //设置邮件主题内容(html格式)
}
else
{
messageHelper.setText(content); //设置邮件主题内容
}
messageHelper.setTo(to); //设定收件人Email
FileSystemResource file = new FileSystemResource(fileAttachment);

messageHelper.addAttachment(file.getFilename(), file); //添加附件
javaMailSender.send(mimeMessage);
}

/**
* 发送邮件 (包括附件)
* @param subject 主题
* @param content 内容
* @param classPathResource 附件文件(附加在项目内部时候)
* @param isHtml 内容是不是是html格式
* @param to 发送的邮箱地址
* @throws MessagingException
*/
public void sendMail(String subject, String content,boolean isHtml, ClassPathResource classPathResource,String to)
throws MessagingException
{

MimeMessage mimeMessage = javaMailSender.createMimeMessage();
/**
* new MimeMessageHelper(mimeMessage,true)之true个人见解:
* 关于true参数,官方文档是这样解释的:
* use the true flag to indicate you need a multipart message
* 翻译过来就是:使用true,以表明你需要多个消息
* 再去翻1下MimeMessageHelper的API,找到这样1句话:
* supporting alternative texts, inline elements and attachments
* 也就是说,如果要支持内联元素和附件就必须给定第2个参数为true
* 否则抛出 java.lang.IllegalStateException 异常
*/
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true,"UTF⑻");
messageHelper.setFrom(simpleMailMessage.getFrom()); //设置发件人Email
messageHelper.setSubject(subject); //设置邮件主题
if(isHtml)
{
messageHelper.setText(content,true); //设置邮件主题内容(html格式)
}
else
{
messageHelper.setText(content); //设置邮件主题内容
}
messageHelper.setTo(to); //设定收件人Email
/** FileSystemResource file = new FileSystemResource(fileAttachment);

* ClassPathResource:很明显就是类路径资源,我这里的附件是在项目里的,所以需要用ClassPathResource
* 如果是系统文件资源就不能用ClassPathResource,而要用FileSystemResource,例:
*

ClassPathResource file = new ClassPathResource("attachment/Readme.txt");
*/
/**
* MimeMessageHelper的addAttachment方法:
* addAttachment(String attachmentFilename, InputStreamSource inputStreamSource)
* InputStreamSource是1个接口,ClassPathResource和FileSystemResource都实现了这个接口

//发送附件邮件
*/
ClassPathResource file = classPathResource;
messageHelper.addAttachment(file.getFilename(), file); //添加附件
javaMailSender.send(mimeMessage);

}

//Spring 依赖注入
@Resource
public void setSimpleMailMessage(SimpleMailMessage simpleMailMessage) {
this.simpleMailMessage = simpleMailMessage;
}
//Spring 依赖注入
@Resource
public void setJavaMailSender(JavaMailSender javaMailSender) {
this.javaMailSender = javaMailSender;
}

}

Demo

package com.bookmarksClouds.test;

import javax.mail.MessagingException;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.bookmarksClouds.util.EmailUtil;

public class EmailUtilTest
{
private ApplicationContext factory = new ClassPathXmlApplicationContext(
new String[] {"spring/spring-smtp-mail-attachment.xml"});
@Test
public void test()
{

EmailUtil mail = (EmailUtil)factory.getBean("simpleMail");
String html= "<html><head><META http-equiv=Content-Type content='text/html; charset=UTF⑻'><title>云书签注册激活</title></head><body>欢迎使用,云书签。<br/><a href='www.baidu.com' >云书签</a><br>点击上面超链接 激活账户信息!</body><html>";

try {
mail.sendMail("云书签注册自动发邮件", html,true, "***@qq.com");
} catch (MessagingException e) {
System.out.println("发送邮件失败!");
//e.printStackTrace();
}
}

}

 Spring配置文件

<?xml version="1.0" encoding="UTF⑻"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans⑶.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context⑶.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop⑶.2.xsd">
<context:annotation-config/>
<context:component-scan base-package="com.bookmarksClouds"/>

<bean id ="mailSender" class ="org.springframework.mail.javamail.JavaMailSenderImpl" >
<!– 服务器 –>
<property name ="host" value ="smtp.163.com" />
<!– 端口号 –>
<property name ="port" value ="25" />
<!– 用户名 –>
<property name ="username" value ="邮箱地址" />
<!– 密码 –>
<property name ="password" value ="邮箱密码" />
<!– SMTP服务器验证 –>
<property name ="javaMailProperties" >
<props >
<!– 验证身份 –>
<prop key ="mail.smtp.auth" > true </prop >
</props >
</property >
</bean >
<bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage">
<!– 发件人email –>
<property name="from" value="发送邮箱地址" />
<!–
收件人email
<property name="to" value="to@yeah.net" />
email主题(标题)
<property name="subject" value="Subject" />
email主题内容
<property name="text">
<value>ContentText</value>
</property>
–>
</bean>

</beans>

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 本站源码并不保证全部能正常使用,仅供有技术基础的人学习研究,请谨慎下载
8. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » Spring发送邮件总结(附源码)

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡