同步发送邮件总结
1,调用邮件工具类实现邮件发送
1)依赖:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.2</version>
</dependency>
2)实体类:
package com.ielpm.pojo;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
/**
*密码验证器实体类
*/
public class MyAuthenticator extends Authenticator {
String userName = null;
String password = null;
public MyAuthenticator() {
}
public MyAuthenticator(String username, String password) {
this.userName = username;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, password);
}
}
/**
*封装待发送邮件信息和链接邮件服务器信息实体类
*/
package com.ielpm.pojo;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Properties;
public class MailSenderInfo implements Serializable {
private static final long serialVersionUID = -4482681249475025351L;
// 发送邮件的服务器的IP
private String mailServerHost;
// 发送邮件的服务器的端口
private String mailServerPort = "25";
// 邮件发送者的地址
private String fromAddress;
// 邮件接收者的地址
private String toAddress;
// 登陆邮件发送服务器的用户名
private String userName;
//登陆邮件发送服务器的用密码
private String password;
// 是否需要身份验证
private boolean validate = false;
// 邮件主题
private String subject;
// 邮件的文本内容
private String content;
// 邮件附件的文件名格式说明:数组存放多个附件,每个附件String用逗号隔开,前面实际路径,后 面重名名{"d:\\ICBCb2b.txt,ICBCb2b.txt"}
private String[] attachFileNames;
/**
* 获得邮件会话属性
*/
public Properties getProperties() {
Properties p = new Properties();
p.put("mail.smtp.host", this.mailServerHost);
p.put("mail.smtp.port", this.mailServerPort);
p.put("mail.smtp.auth", validate ? "true" : "false");
return p;
}
public String getMailServerHost() {
return mailServerHost;
}
public void setMailServerHost(String mailServerHost) {
this.mailServerHost = mailServerHost;
}
public String getMailServerPort() {
return mailServerPort;
}
public void setMailServerPort(String mailServerPort) {
this.mailServerPort = mailServerPort;
}
public boolean isValidate() {
return validate;
}
public void setValidate(boolean validate) {
this.validate = validate;
}
public String[] getAttachFileNames() {
return attachFileNames;
}
public void setAttachFileNames(String[] fileNames) {
this.attachFileNames = fileNames;
}
public String getFromAddress() {
return fromAddress;
}
public void setFromAddress(String fromAddress) {
this.fromAddress = fromAddress;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getToAddress() {
return toAddress;
}
public void setToAddress(String toAddress) {
this.toAddress = toAddress;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String textContent) {
this.content = textContent;
}
@Override
public String toString() {
return "MailSenderInfo [mailServerHost=" + mailServerHost + ", mailServerPort=" + mailServerPort + ", fromAddress=" + fromAddress + ", toAddress=" + toAddress + ", userName=" + userName + ", password="+ password + ", validate=" + validate + ", subject=" + subject + ", content=" + content+ ", attachFileNames=" + Arrays.toString(attachFileNames) + "]";
}
}
3)工具类:
/**
* All rights Reserved, Designed By www.ielpm.com
* @Title: SimpleMailSender.java
* @Package com.ielpm.service
* @Description: TODO(发送邮件的工具类)
* @author: renpl
* @date: 2018年5月28日 下午2:47:12
* @version V1.0
*/
package com.ielpm.service;
import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import com.ielpm.pojo.MailSenderInfo;
import com.ielpm.pojo.MyAuthenticator;
/**
* @ClassName: SimpleMailSender
* @Description:TODO(简单邮件(不带附件的邮件)发送器 )
* @author: renpl
* @date: 2018年5月28日 下午2:47:12
*
* @Copyright: 2018 www.ielpm.com . All rights reserved.
*
*/
public class SimpleMailSender {
/**
* 以文本格式发送邮件
* @param mailInfo 待发送的邮件的信息
*/
public boolean sendTextMail(MailSenderInfo mailInfo) {
//1. 判断是否需要身份认证
MyAuthenticator authenticator = null;
//2.邮件会话属性
Properties pro = mailInfo.getProperties();
if (mailInfo.isValidate()) {
// 3.如果需要身份认证,则创建一个密码验证器
authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
}
// 4.根据邮件会话属性和密码验证器构造一个发送邮件的session
Session sendMailSession = Session.getDefaultInstance(pro,authenticator);
try {
//5. 根据session创建一个邮件消息 ,并进行相关设置
Message mailMessage = new MimeMessage(sendMailSession);
// 创建邮件发送者地址
Address from = new InternetAddress(mailInfo.getFromAddress());
// 设置邮件消息的发送者
mailMessage.setFrom(from);
// 创建邮件的接收者地址,并设置到邮件消息中
Address to = new InternetAddress(mailInfo.getToAddress());
mailMessage.setRecipient(Message.RecipientType.TO,to);
// 设置邮件消息的主题
mailMessage.setSubject(mailInfo.getSubject());
// 设置邮件消息发送的时间
mailMessage.setSentDate(new Date());
// 设置邮件消息的主要内容
String mailContent = mailInfo.getContent();
mailMessage.setText(mailContent);
// 6.发送邮件
Transport.send(mailMessage);
return true;
} catch (MessagingException ex) {
ex.printStackTrace();
}
return false;
}
/**
* 以HTML格式发送邮件
* @param mailInfo 待发送的邮件信息
*/
public boolean sendHtmlMail(MailSenderInfo mailInfo) {
// 判断是否需要身份认证
MyAuthenticator authenticator = null;
Properties pro = mailInfo.getProperties();
// 如果需要身份认证,则创建一个密码验证器
if (mailInfo.isValidate()) {
authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
}
// 根据邮件会话属性和密码验证器构造一个发送邮件的session
//Session sendMailSession = Session.getDefaultInstance(pro, authenticator);
Session sendMailSession = Session.getInstance(pro, authenticator);
sendMailSession.setDebug(true);
try {
// 根据session创建一个邮件消息
Message mailMessage = new MimeMessage(sendMailSession);
// 创建邮件发送者地址
Address from = new InternetAddress(mailInfo.getFromAddress());
// 设置邮件消息的发送者
mailMessage.setFrom(from);
// 创建邮件的接收者地址,并设置到邮件消息中
Address to = new InternetAddress(mailInfo.getToAddress());
// Message.RecipientType.TO属性表示接收者的类型为TO
mailMessage.setRecipient(Message.RecipientType.TO, to);
// 设置邮件消息的主题
mailMessage.setSubject(mailInfo.getSubject());
// 设置邮件消息发送的时间
mailMessage.setSentDate(new Date());
// MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
Multipart mainPart = new MimeMultipart();
// 创建一个包含HTML内容的MimeBodyPart
BodyPart html = new MimeBodyPart();
// 设置HTML内容
html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
mainPart.addBodyPart(html);
// 将MiniMultipart对象设置为邮件内容
mailMessage.setContent(mainPart);
// 发送邮件
Transport.send(mailMessage);
return true;
} catch (MessagingException ex) {
ex.printStackTrace();
}
return false;
}
package com.ielpm.test;
import org.junit.Before;
import org.junit.Test;
import com.ielpm.pojo.MailSenderInfo;
import com.ielpm.service.SimpleMailSender;
public class TestSimpleMailSend {
private SimpleMailSender mailSender;
@Before
public void init() {
mailSender = new SimpleMailSender();
}
@Test
public void simpleMailSendTest() {
MailSenderInfo mailInfo = new MailSenderInfo();
mailInfo.setSubject("同步邮件发送");
mailInfo.setContent("您好:这是通过同步邮件方式发送文本格式邮件");
mailInfo.setFromAddress("13693547470@163.com");
mailInfo.setToAddress("18810491372@163.com");
mailInfo.setUserName("13693547470@163.com");
mailInfo.setPassword("renpl123");
mailInfo.setMailServerHost("smtp.163.com");
mailInfo.setMailServerPort("25");
mailInfo.setValidate(true);
mailSender.sendHtmlMail(mailInfo);
//mailSender.sendTextMail(mailInfo);
}
}
2,spring管理邮件工具类实现邮件发送
1)pom.xml依赖:
<!-- 设置公共属性,可以被引用 ${attribute} -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>4.11</junit.version>
<spring.version>4.0.0.RELEASE</spring.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.google.zxing/core -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
2)实体类
package com.ielpm.pojo;
public class MailInfo {
private String from;
private String to;
private String subject;
private String content;
public MailInfo(String from, String to, String subject, String content) {
super();
this.from = from;
this.to = to;
this.subject = subject;
this.content = content;
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
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;
}
}
3)配置文件配置 (存放到项目的resources目录下)
config.properties
## SMTP Configuration
mail.host=smtp.163.com
mail.port=25
mail.username=13693547470@163.com
mail.password=renpl123
mail.smtp.auth=true
mail.smtp.timeout=30000
mail.default.from=13693547470@163.com
spring-mail.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" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd"
default-autowire="byName" default-lazy-init="false">
<!-- Spring提供的发送电子邮件的高级抽象类 ,此类实例用于封装登录邮件服务器的信息-->
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.host}" />
<property name="username" value="${mail.username}" />
<property name="password" value="${mail.password}" />
<property name="defaultEncoding" value="UTF-8"></property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
<prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
</props>
</property>
</bean>
<!--简单的邮件发送,不发附件-->
<bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage">
<property name="from">
<value>${mail.default.from}</value>
</property>
</bean>
</beans>
spring-context.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" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd"
default-autowire="byName" default-lazy-init="false">
<!-- 读入配置属性文件 -->
<context:property-placeholder location="classpath:config.properties" />
<!-- 注解配置 -->
<context:annotation-config />
<!-- 扫描包起始位置 -->
<context:component-scan base-package="com.ielpm" />
<import resource="classpath:spring-mail.xml" />
</beans>
4)测试类
package com.ielpm.test;
import org.springframework.util.StringUtils;
import com.ielpm.pojo.MailInfo;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@ContextConfiguration(locations= {"classpath:spring-context.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
public class TestSpringSimpleMailSend {
@Autowired
private JavaMailSender javaMailSender;
@Autowired
private SimpleMailMessage simpleMailMessage;
@Test
public void simpleMailSend() {
MailInfo mail = new MailInfo("13693547470@163.com","18810491372@163.com","spring发送邮 件","您好! 老孙");
if(!StringUtils.isEmpty(mail.getFrom())) {
simpleMailMessage.setFrom(mail.getFrom());
}else {
simpleMailMessage.setFrom(simpleMailMessage.getFrom());
}
simpleMailMessage.setTo(mail.getTo());
simpleMailMessage.setSubject(mail.getSubject());
simpleMailMessage.setText(mail.getContent());
javaMailSender.send(simpleMailMessage);
}
}
1,调用邮件工具类实现邮件发送
1)依赖:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.2</version>
</dependency>
2)实体类:
package com.ielpm.pojo;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
/**
*密码验证器实体类
*/
public class MyAuthenticator extends Authenticator {
String userName = null;
String password = null;
public MyAuthenticator() {
}
public MyAuthenticator(String username, String password) {
this.userName = username;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, password);
}
}
/**
*封装待发送邮件信息和链接邮件服务器信息实体类
*/
package com.ielpm.pojo;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Properties;
public class MailSenderInfo implements Serializable {
private static final long serialVersionUID = -4482681249475025351L;
// 发送邮件的服务器的IP
private String mailServerHost;
// 发送邮件的服务器的端口
private String mailServerPort = "25";
// 邮件发送者的地址
private String fromAddress;
// 邮件接收者的地址
private String toAddress;
// 登陆邮件发送服务器的用户名
private String userName;
//登陆邮件发送服务器的用密码
private String password;
// 是否需要身份验证
private boolean validate = false;
// 邮件主题
private String subject;
// 邮件的文本内容
private String content;
// 邮件附件的文件名格式说明:数组存放多个附件,每个附件String用逗号隔开,前面实际路径,后 面重名名{"d:\\ICBCb2b.txt,ICBCb2b.txt"}
private String[] attachFileNames;
/**
* 获得邮件会话属性
*/
public Properties getProperties() {
Properties p = new Properties();
p.put("mail.smtp.host", this.mailServerHost);
p.put("mail.smtp.port", this.mailServerPort);
p.put("mail.smtp.auth", validate ? "true" : "false");
return p;
}
public String getMailServerHost() {
return mailServerHost;
}
public void setMailServerHost(String mailServerHost) {
this.mailServerHost = mailServerHost;
}
public String getMailServerPort() {
return mailServerPort;
}
public void setMailServerPort(String mailServerPort) {
this.mailServerPort = mailServerPort;
}
public boolean isValidate() {
return validate;
}
public void setValidate(boolean validate) {
this.validate = validate;
}
public String[] getAttachFileNames() {
return attachFileNames;
}
public void setAttachFileNames(String[] fileNames) {
this.attachFileNames = fileNames;
}
public String getFromAddress() {
return fromAddress;
}
public void setFromAddress(String fromAddress) {
this.fromAddress = fromAddress;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getToAddress() {
return toAddress;
}
public void setToAddress(String toAddress) {
this.toAddress = toAddress;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String textContent) {
this.content = textContent;
}
@Override
public String toString() {
return "MailSenderInfo [mailServerHost=" + mailServerHost + ", mailServerPort=" + mailServerPort + ", fromAddress=" + fromAddress + ", toAddress=" + toAddress + ", userName=" + userName + ", password="+ password + ", validate=" + validate + ", subject=" + subject + ", content=" + content+ ", attachFileNames=" + Arrays.toString(attachFileNames) + "]";
}
}
3)工具类:
/**
* All rights Reserved, Designed By www.ielpm.com
* @Title: SimpleMailSender.java
* @Package com.ielpm.service
* @Description: TODO(发送邮件的工具类)
* @author: renpl
* @date: 2018年5月28日 下午2:47:12
* @version V1.0
*/
package com.ielpm.service;
import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import com.ielpm.pojo.MailSenderInfo;
import com.ielpm.pojo.MyAuthenticator;
/**
* @ClassName: SimpleMailSender
* @Description:TODO(简单邮件(不带附件的邮件)发送器 )
* @author: renpl
* @date: 2018年5月28日 下午2:47:12
*
* @Copyright: 2018 www.ielpm.com . All rights reserved.
*
*/
public class SimpleMailSender {
/**
* 以文本格式发送邮件
* @param mailInfo 待发送的邮件的信息
*/
public boolean sendTextMail(MailSenderInfo mailInfo) {
//1. 判断是否需要身份认证
MyAuthenticator authenticator = null;
//2.邮件会话属性
Properties pro = mailInfo.getProperties();
if (mailInfo.isValidate()) {
// 3.如果需要身份认证,则创建一个密码验证器
authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
}
// 4.根据邮件会话属性和密码验证器构造一个发送邮件的session
Session sendMailSession = Session.getDefaultInstance(pro,authenticator);
try {
//5. 根据session创建一个邮件消息 ,并进行相关设置
Message mailMessage = new MimeMessage(sendMailSession);
// 创建邮件发送者地址
Address from = new InternetAddress(mailInfo.getFromAddress());
// 设置邮件消息的发送者
mailMessage.setFrom(from);
// 创建邮件的接收者地址,并设置到邮件消息中
Address to = new InternetAddress(mailInfo.getToAddress());
mailMessage.setRecipient(Message.RecipientType.TO,to);
// 设置邮件消息的主题
mailMessage.setSubject(mailInfo.getSubject());
// 设置邮件消息发送的时间
mailMessage.setSentDate(new Date());
// 设置邮件消息的主要内容
String mailContent = mailInfo.getContent();
mailMessage.setText(mailContent);
// 6.发送邮件
Transport.send(mailMessage);
return true;
} catch (MessagingException ex) {
ex.printStackTrace();
}
return false;
}
/**
* 以HTML格式发送邮件
* @param mailInfo 待发送的邮件信息
*/
public boolean sendHtmlMail(MailSenderInfo mailInfo) {
// 判断是否需要身份认证
MyAuthenticator authenticator = null;
Properties pro = mailInfo.getProperties();
// 如果需要身份认证,则创建一个密码验证器
if (mailInfo.isValidate()) {
authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
}
// 根据邮件会话属性和密码验证器构造一个发送邮件的session
//Session sendMailSession = Session.getDefaultInstance(pro, authenticator);
Session sendMailSession = Session.getInstance(pro, authenticator);
sendMailSession.setDebug(true);
try {
// 根据session创建一个邮件消息
Message mailMessage = new MimeMessage(sendMailSession);
// 创建邮件发送者地址
Address from = new InternetAddress(mailInfo.getFromAddress());
// 设置邮件消息的发送者
mailMessage.setFrom(from);
// 创建邮件的接收者地址,并设置到邮件消息中
Address to = new InternetAddress(mailInfo.getToAddress());
// Message.RecipientType.TO属性表示接收者的类型为TO
mailMessage.setRecipient(Message.RecipientType.TO, to);
// 设置邮件消息的主题
mailMessage.setSubject(mailInfo.getSubject());
// 设置邮件消息发送的时间
mailMessage.setSentDate(new Date());
// MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
Multipart mainPart = new MimeMultipart();
// 创建一个包含HTML内容的MimeBodyPart
BodyPart html = new MimeBodyPart();
// 设置HTML内容
html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
mainPart.addBodyPart(html);
// 将MiniMultipart对象设置为邮件内容
mailMessage.setContent(mainPart);
// 发送邮件
Transport.send(mailMessage);
return true;
} catch (MessagingException ex) {
ex.printStackTrace();
}
return false;
}
}
package com.ielpm.test;
import org.junit.Before;
import org.junit.Test;
import com.ielpm.pojo.MailSenderInfo;
import com.ielpm.service.SimpleMailSender;
public class TestSimpleMailSend {
private SimpleMailSender mailSender;
@Before
public void init() {
mailSender = new SimpleMailSender();
}
@Test
public void simpleMailSendTest() {
MailSenderInfo mailInfo = new MailSenderInfo();
mailInfo.setSubject("同步邮件发送");
mailInfo.setContent("您好:这是通过同步邮件方式发送文本格式邮件");
mailInfo.setFromAddress("13693547470@163.com");
mailInfo.setToAddress("18810491372@163.com");
mailInfo.setUserName("13693547470@163.com");
mailInfo.setPassword("renpl123");
mailInfo.setMailServerHost("smtp.163.com");
mailInfo.setMailServerPort("25");
mailInfo.setValidate(true);
mailSender.sendHtmlMail(mailInfo);
//mailSender.sendTextMail(mailInfo);
}
}
2,spring管理邮件工具类实现邮件发送
1)pom.xml依赖:
<!-- 设置公共属性,可以被引用 ${attribute} -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>4.11</junit.version>
<spring.version>4.0.0.RELEASE</spring.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.google.zxing/core -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
2)实体类
package com.ielpm.pojo;
public class MailInfo {
private String from;
private String to;
private String subject;
private String content;
public MailInfo(String from, String to, String subject, String content) {
super();
this.from = from;
this.to = to;
this.subject = subject;
this.content = content;
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
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;
}
}
3)配置文件配置 (存放到项目的resources目录下)
config.properties
## SMTP Configuration
mail.host=smtp.163.com
mail.port=25
mail.username=13693547470@163.com
mail.password=renpl123
mail.smtp.auth=true
mail.smtp.timeout=30000
mail.default.from=13693547470@163.com
spring-mail.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" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd"
default-autowire="byName" default-lazy-init="false">
<!-- Spring提供的发送电子邮件的高级抽象类 ,此类实例用于封装登录邮件服务器的信息-->
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.host}" />
<property name="username" value="${mail.username}" />
<property name="password" value="${mail.password}" />
<property name="defaultEncoding" value="UTF-8"></property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
<prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
</props>
</property>
</bean>
<!--简单的邮件发送,不发附件-->
<bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage">
<property name="from">
<value>${mail.default.from}</value>
</property>
</bean>
</beans>
spring-context.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" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd"
default-autowire="byName" default-lazy-init="false">
<!-- 读入配置属性文件 -->
<context:property-placeholder location="classpath:config.properties" />
<!-- 注解配置 -->
<context:annotation-config />
<!-- 扫描包起始位置 -->
<context:component-scan base-package="com.ielpm" />
<import resource="classpath:spring-mail.xml" />
</beans>
4)测试类
package com.ielpm.test;
import org.springframework.util.StringUtils;
import com.ielpm.pojo.MailInfo;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@ContextConfiguration(locations= {"classpath:spring-context.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
public class TestSpringSimpleMailSend {
@Autowired
private JavaMailSender javaMailSender;
@Autowired
private SimpleMailMessage simpleMailMessage;
@Test
public void simpleMailSend() {
MailInfo mail = new MailInfo("13693547470@163.com","18810491372@163.com","spring发送邮 件","您好! 老孙");
if(!StringUtils.isEmpty(mail.getFrom())) {
simpleMailMessage.setFrom(mail.getFrom());
}else {
simpleMailMessage.setFrom(simpleMailMessage.getFrom());
}
simpleMailMessage.setTo(mail.getTo());
simpleMailMessage.setSubject(mail.getSubject());
simpleMailMessage.setText(mail.getContent());
javaMailSender.send(simpleMailMessage);
}
}