2024-02-23 10:46:22 +08:00

88 lines
3.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package utils.msgPush.mail;
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;
/**
* @author fuhouyin
* @time 2023/1/28 14:13
* 由于依赖停止维护,请谨慎使用
*/
public class Mail {
/**
* 发送邮件
* @param mailName 发件地址
* @param mailPwd 密钥
* @param toMail 收件地址
* @param strTitle 标题
* @param strContent 内容
*/
public static void sendMail(String mailName,String mailPwd,String toMail,String strTitle,String strContent) throws Exception{
// 1. 创建参数配置, 用于连接邮件服务器的参数配置
Properties props = new Properties(); // 参数配置
props.setProperty("utils.msgPush.mail.transport.protocol", "smtp"); // 使用的协议JavaMail规范要求
props.setProperty("utils.msgPush.mail.smtp.host", "smtp.126.com"); // 发件人的邮箱的 SMTP 服务器地址
props.setProperty("utils.msgPush.mail.smtp.auth", "true"); // 需要请求认证
// 2. 根据配置创建会话对象, 用于和邮件服务器交互
Session session = Session.getInstance(props);
session.setDebug(true); // 设置为debug模式, 可以查看详细的发送 log
// 3. 创建一封邮件
MimeMessage message = createMimeMessage(session,mailName,toMail,strTitle,strContent);
// 4. 根据 Session 获取邮件传输对象
Transport transport = session.getTransport();
// 5. 使用 邮箱账号 和 密码 连接邮件服务器, 这里认证的邮箱必须与 message 中的发件人邮箱一致, 否则报错
transport.connect(mailName, mailPwd);
// 6. 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人
transport.sendMessage(message, message.getAllRecipients());
// 7. 关闭连接
transport.close();
}
/**
* 创建邮件模板
* @param session session
* @param sendMail 发件地址
* @param receiveMail 收件地址
* @param strTitle 标题
* @param strContent 内容
* @return
* @throws Exception
*/
public static MimeMessage createMimeMessage(Session session, String sendMail, String receiveMail, String strTitle, String strContent) throws Exception {
// 1. 创建一封邮件
MimeMessage message = new MimeMessage(session);
// 2. From: 发件人(昵称有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改昵称)
message.setFrom(new InternetAddress(sendMail, "消息小助手", "UTF-8"));
// 3. To: 收件人(可以增加多个收件人、抄送、密送)
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail, "消息小助手", "UTF-8"));
// 4. Subject: 邮件主题(标题有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改标题)
message.setSubject(strTitle, "UTF-8");
// 5. Content: 邮件正文可以使用html标签内容有广告嫌疑避免被邮件服务器误认为是滥发广告以至返回失败请修改发送内容
message.setContent(strContent, "text/html;charset=UTF-8");
// 6. 设置发件时间
message.setSentDate(new Date());
// 7. 保存设置
message.saveChanges();
return message;
}
}