工具类:
package com.zacholly.fpp.utils;
import java.util.Date;
import java.util.Properties;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
/**
* 邮件
*
* @author zac_holly
*
*/
public class MailUtils {
/**
* 邮件发送
*
* @param smtpServer
* 发件人邮箱的SMTP 服务器地址
* @param smtpPort
* 发件人邮箱SMTP服务器端口号
* @param mailProtocol
* 邮件发送使用的协议(JavaMail规范要求)
* @param fromEmailName
* 发件人邮箱名
* @param fromPassword
* 发件人邮箱密码
* @param fromAlias
* 发件人昵称
* @param toEmailName
* 收件人邮箱名
* @param toAlias
* 收件人昵称
* @param charset
* 邮件使用的编码
* @param theme
* 邮件主题
* @param content
* 邮件内容
* @throws Exception
*/
public static void sendMail(String smtpServer, String smtpPort, String mailProtocol, String fromEmailName,
String fromPassword, String fromAlias, String toEmailName, String toAlias, String charset, String theme,
String content) throws Exception {
Properties props = new Properties();
// 设置邮件相关配置
props.setProperty("mail.transport.protocol", mailProtocol);// 使用的协议(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 msg = new MimeMessage(session);
// 设置发送邮件方
InternetAddress fromAddress = new InternetAddress(fromEmailName, fromAlias, charset);
msg.setFrom(fromAddress);
// 设置邮件接收方
InternetAddress receiveAddress = new InternetAddress(toEmailName, toAlias, charset);
msg.setRecipient(RecipientType.TO, receiveAddress);
// 设置邮件标题
msg.setSubject(theme, charset);
// 设置邮箱内容
msg.setText(content);
// 设置显示的发送时间
msg.setSentDate(new Date());
// 保存设置
msg.saveChanges();
// 获取传输通道
Transport transport = session.getTransport();
transport.connect(smtpServer, fromEmailName, fromPassword);
// 连接,并发送邮件
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
}
}
测试类:
@Test
public void mailUtilsTest() {
String smtpServer = "smtp.163.com";
String smtpPort = "465";
String mailProtocol = "smtp";
String fromEmailName = "hlz_uestc@163.com";
String fromPassword = "*****";
String fromAlias = "zac_holly";
String toEmailName = "584075540@qq.com";
String toAlias = "hailong";
String charset = "utf-8";
String theme = "测试邮箱用例,调用mailutils工具类";
String content = "我是个程序员,一天我坐在路边一边喝水一边苦苦检查程序。 这时一个乞丐在我边上坐下了,开始要饭,我觉得可怜,就给了他1块钱。 然后接着调试程序。他可能生意不好,就无聊的看看我在干什么,然后过了一会,他缓缓地指着我的屏幕说,这里少了个分号";
try {
MailUtils.sendMail(smtpServer, smtpPort, mailProtocol, fromEmailName, fromPassword, fromAlias, toEmailName,
toAlias, charset, theme, content);
} catch (Exception e) {
e.printStackTrace();
}
}
pom.xml
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>