Spring的JavaMailSenderImpl发送邮件

来源:互联网 发布:java final关键字用法 编辑:程序博客网 时间:2024/06/05 11:54

POM.xml依赖


<dependency>

<groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>

</dependency>

<dependency>

   <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>4.1.2.RELEASE</version>

</dependency>

1、先创建Email类存放邮件的相关信息:

import java.io.File;
import java.io.Serializable;
import java.util.List;

public class Email implements Serializable {
private static final long serialVersionUID = 7934840497247727370L;

/** 用户组:可以按用户组来批量发送邮件 **/
/** 待用属性 **/
/** 收件人 **/
private List
 address;
/** 暗送 **/
private String bcc;
/** 抄送给 **/
private List cc;
/** 邮件主题 **/
private String subject;
/** 邮件内容 **/
private String content;
/** 附件 **/
private List annexFile;
public List getAddress() {
return address;
}
public void setAddress(List address) {
this.address = address;
}
public String getBcc() {
return bcc;
}
public void setBcc(String bcc) {
this.bcc = bcc;
}
public List getCc() {
return cc;
}
public void setCc(List cc) {
this.cc = cc;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public List getAnnexFile() {
return annexFile;
}
public void setAnnexFile(List annexFile) {
this.annexFile = annexFile;
}
}


2、然后创建邮件服务器的信息类:

public class MailProperty {
//邮件主机
private String smtpHost;
//发送人账号
private String user;
//发送人密码
private String pwd;
//发送邮箱
private String from;
//回复到
private String replyTo;
public String getSmtpHost() {
return smtpHost;
}
public void setSmtpHost(String smtpHost) {
this.smtpHost = smtpHost;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getReplyTo() {
return replyTo;
}
public void setReplyTo(String replyTo) {
this.replyTo = replyTo;
}
}


3、然后创建发邮件的工具类:MailUtil.java

import java.io.File;

import java.util.List;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeUtility;

import org.springframework.mail.javamail.JavaMailSenderImpl;

import org.springframework.mail.javamail.MimeMessageHelper;

public class MailUtil {
public void sendEmail(MailProperty property, Email email) throws Exception {
// 先配置邮件服务器
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost(property.getSmtpHost());
mailSender.setUsername(property.getUser());
mailSender.setPassword(property.getPwd());
// 设置邮件的属性
MimeMessage mime = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mime, true, "utf-8");
// 设置发件人
helper.setFrom(property.getFrom());
// 设置恢复到的账号
helper.setReplyTo(property.getReplyTo());
List<String> list = email.getAddress();
String[] addrs = new String[list.size()];
for (int i = 0; i < list.size(); i++) {
addrs[i] = list.get(i);
}
helper.setTo(addrs);// 收件人
// helper.setBcc(email.getBcc());// 暗送
List<String> ccList = email.getCc();
if (ccList != null) {
String[] cc = new String[ccList.size()];
for (int i = 0; i < ccList.size(); i++) {
cc[i] = ccList.get(i);
}
helper.setCc(cc);// 抄送
}


// 内嵌资源,这种功能很少用,因为大部分资源都在网上,只需在邮件正文中给个URL就足够了.
// helper.addInline(“logo”, new ClassPathResource(“logo.gif”)); //处理附件
if (email.getAnnexFile() != null) {
for (File file : email.getAnnexFile()) {
if (file == null) {
continue;
}
helper.addAttachment(MimeUtility.encodeWord(file.getName()),
file);
}
}
helper.setSubject(email.getSubject());// 邮件主题
helper.setText(email.getContent(), true);// true表示设定html格式
mailSender.send(mime);
}
}


4、测试类
import java.util.ArrayList;
import java.util.List;
public class MailTest {
public static void main(String[] args) {
MailProperty property = new MailProperty();
property.setSmtpHost(“##”);//如: smtp.163.com
property.setUser(“##”);//如:aaa@163.com
property.setPwd(“##”);//密码
property.setFrom(“##”);//发送人
property.setReplyTo(“##”);
Email email = new Email();
List address = new ArrayList();
address.add(“email@zhangjie.hn.cn”);//接收人
email.setAddress(address);
email.setContent(“测试”);
email.setSubject(“测试”);
MailUtil util = new MailUtil();
try {
util.sendEmail(property, email);
} catch (Exception e) {
e.printStackTrace();
}
}
}

0 0
原创粉丝点击