引入jar包
<!-- JavaMail依赖 -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
使用JAVAMail发送邮件
封装邮件信息对象
package com.saninco.demo;
/**
* 封装的邮件对象
*/
public class MyEmailDemo {
private String smtpserver; //发件人的邮箱的 SMTP 服务器地址
private String smtpport; // 连接的服务端口
private String userAccout; //发件人邮箱账号 *****@163.com
private String userPwd; //发件人邮箱密码
private String userPresonal; // 发件方昵称 kimi
private String Useradress; //接收方地址 ******@163.com
private String Emailtitle; // 邮件标题
private String Emailtest; // 邮件内容
public String getSmtpserver() {
return smtpserver;
}
public void setSmtpserver(String smtpserver) {
this.smtpserver = smtpserver;
}
public String getSmtpport() {
return smtpport;
}
public void setSmtpport(String smtpport) {
this.smtpport = smtpport;
}
public String getUserAccout() {
return userAccout;
}
public void setUserAccout(String userAccout) {
this.userAccout = userAccout;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
public String getUserPresonal() {
return userPresonal;
}
public void setUserPresonal(String userPresonal) {
this.userPresonal = userPresonal;
}
public String getUseradress() {
return Useradress;
}
public void setUseradress(String useradress) {
Useradress = useradress;
}
public String getEmailtitle() {
return Emailtitle;
}
public void setEmailtitle(String emailtitle) {
Emailtitle = emailtitle;
}
public String getEmailtest() {
return Emailtest;
}
public void setEmailtest(String emailtest) {
Emailtest = emailtest;
}
}
创建发送邮件
package com.saninco.demo;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;
/**
* 邮件创建和发送
*/
public class MyEmail {
/**
* 发送邮件
* @param smtpserver 发件人的邮箱的 SMTP 服务器地址
* @param smtpport 连接的服务端口
* @param userAccout 发件人邮箱账号 *****@163.com
* @param userPwd 发件人邮箱密码
* @param userPresonal 发件方昵称 kimi
* @param Useradress 接收方地址 ******@163.com
* @param Emailtitle 邮件标题
* @param Emailtest 邮件内容
* @throws Exception
*/
public void SendEmail(String smtpserver,String smtpport,String userAccout,
String userPwd,String userPresonal,String Useradress,
String Emailtitle,String Emailtest) throws Exception {
// 创建邮件配置
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp"); // 使用的协议(JavaMail规范要求)
props.setProperty("mail.smtp.host", smtpserver); // 发件人的邮箱的 SMTP 服务器地址
props.setProperty("mail.smtp.port", smtpport);//连接的服务端口
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.auth", "true"); // 需要请求认证
props.setProperty("mail.smtp.ssl.enable", "true");// 开启ssl
// 根据邮件配置创建会话,注意session别导错包
Session session = Session.getDefaultInstance(props);
// 开启debug模式,可以看到更多详细的输入日志
session.setDebug(true);
//创建邮件
MimeMessage message = createEmail(session,userAccout,userPresonal,Useradress,Emailtitle,Emailtest);
//获取传输通道
Transport transport = session.getTransport();
//服务器地址,发送人账号,密码
transport.connect(smtpserver,userAccout, userPwd);
//连接,并发送邮件
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
/**
* 发送邮件
* @param emailDemo 邮件主体
* @throws Exception
*/
public void SendEmailFor(MyEmailDemo emailDemo) throws Exception {
// 创建邮件配置
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp"); // 使用的协议(JavaMail规范要求)
props.setProperty("mail.smtp.host", emailDemo.getSmtpserver()); // 发件人的邮箱的 SMTP 服务器地址
props.setProperty("mail.smtp.port", emailDemo.getSmtpport());//连接的服务端口
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.auth", "true"); // 需要请求认证
props.setProperty("mail.smtp.ssl.enable", "true");// 开启ssl
// 根据邮件配置创建会话,注意session别导错包
Session session = Session.getDefaultInstance(props);
// 开启debug模式,可以看到更多详细的输入日志
session.setDebug(true);
//创建邮件
MimeMessage message = createEmail(session,emailDemo.getUserAccout(),emailDemo.getUserPresonal(),emailDemo.getUseradress(),
emailDemo.getEmailtitle(),emailDemo.getEmailtest());
//获取传输通道
Transport transport = session.getTransport();
transport.connect(emailDemo.getSmtpserver(),emailDemo.getUserAccout(),emailDemo.getUserPwd());
//连接,并发送邮件
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
/**
* 创建邮件
* @param session
* @param accoutAdress 发件方地址 *****@163.com
* @param userPresonal 发件方昵称 kimi
* @param Useradress 接收方地址 ******@163.com
* @param Emailtitle 邮件标题
* @param Emailtest 邮件内容
* @return
* @throws Exception
*/
public MimeMessage createEmail(Session session,String accoutAdress, String userPresonal,String Useradress,String Emailtitle,String Emailtest) throws Exception {
// 根据会话创建邮件
MimeMessage msg = new MimeMessage(session);
// address邮件地址, personal邮件昵称, charset编码方式
InternetAddress fromAddress = new InternetAddress(accoutAdress,userPresonal, "utf-8");
// 设置发送邮件方
msg.setFrom(fromAddress);
//邮件接收方
InternetAddress receiveAddress = new InternetAddress(Useradress, "test", "utf-8");
// 设置邮件接收方
msg.setRecipient(Message.RecipientType.TO, receiveAddress);
// 设置邮件标题
msg.setSubject(Emailtitle, "utf-8");
//设置文件内容
msg.setText(Emailtest);
// msg.set
// 设置显示的发件时间
msg.setSentDate(new Date());
// 保存设置
msg.saveChanges();
return msg;
}
}
测试test
package com.saninco.app.service;
import com.saninco.demo.MyEmail;
import com.saninco.demo.MyEmailDemo;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.mail.Message.RecipientType;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;
@RunWith(SpringRunner.class)
@SpringBootTest
public class EmailServiceTest {
public static final String SMTPSERVER = "smtp.163.com";
public static final String SMTPPORT = "465";
public static final String ACCOUT = "******@163.com";
public static final String PWD = "******";
@Test
public void testSendEmail() throws Exception {
// 创建邮件配置
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp"); // 使用的协议(JavaMail规范要求)
props.setProperty("mail.smtp.host", SMTPSERVER); // 发件人的邮箱的 SMTP 服务器地址
props.setProperty("mail.smtp.port", SMTPPORT);
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.auth", "true"); // 需要请求认证
props.setProperty("mail.smtp.ssl.enable", "true");// 开启ssl
// 根据邮件配置创建会话,注意session别导错包
Session session = Session.getDefaultInstance(props);
// 开启debug模式,可以看到更多详细的输入日志
session.setDebug(true);
//创建邮件
MimeMessage message = createEmail(session);
//获取传输通道
Transport transport = session.getTransport();
transport.connect(SMTPSERVER,ACCOUT, PWD);
//连接,并发送邮件
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
public MimeMessage createEmail(Session session) throws Exception {
// 根据会话创建邮件
MimeMessage msg = new MimeMessage(session);
// address邮件地址, personal邮件昵称, charset编码方式
InternetAddress fromAddress = new InternetAddress(ACCOUT,
"kimi", "utf-8");
// 设置发送邮件方
msg.setFrom(fromAddress);
InternetAddress receiveAddress = new InternetAddress(
"******@qq.com", "test", "utf-8");
// 设置邮件接收方
msg.setRecipient(RecipientType.TO, receiveAddress);
// 设置邮件标题
msg.setSubject("测试标题", "utf-8");
msg.setText("我是个程序员");
// 设置显示的发件时间
msg.setSentDate(new Date());
// 保存设置
msg.saveChanges();
return msg;
}
@Test
public void testEmailShoe() throws Exception{
MyEmail myEmail=new MyEmail();
myEmail.SendEmail("smtp.163.com","465",
"******@qq.com","******","kimitwo",
"******@qq.com","测试邮件标题","这是一段测试内容");
}
@Test
public void testEmailShoe3() throws Exception{
MyEmail myEmail=new MyEmail();
MyEmailDemo emailDemo=new MyEmailDemo();
emailDemo.setSmtpserver("smtp.163.com");
emailDemo.setSmtpport("465");
emailDemo.setUserAccout("*****@163.com");
emailDemo.setUserPwd("*****");
emailDemo.setUserPresonal("xiaoming");
emailDemo.setUseradress("******@qq.com");
emailDemo.setEmailtitle("封装好的内容");
emailDemo.setEmailtest("这是一段比较重要的文字,不要拦截");
myEmail.SendEmailFor(emailDemo);
}
}