package com.itheima.utils;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.*;
import java.io.File;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Properties;
public class SMSUtil {
public static MimeMessage simpleMail(Session session, String mailFrom, String mailTo, String mailTittle, String mailContent) {
MimeMessage msg = new MimeMessage(session);
try {
msg.setFrom(mailFrom);
msg.setRecipients(Message.RecipientType.TO, mailTo);
msg.setSubject(mailTittle);
msg.setSentDate(new Date());
msg.setContent(mailContent, "text/html;charset=UTF-8");
} catch (Exception mex) {
mex.printStackTrace();
}
return msg;
}
public static MimeMessage attachMail(Session session, Map<String, Object> contentMap, List<File> attachments) {
MimeMessage mimeMessage = new MimeMessage(session);
try {
mimeMessage.setFrom(contentMap.get("mailFrom").toString());
mimeMessage.setRecipients(Message.RecipientType.TO, contentMap.get("mailTo").toString());
mimeMessage.setSubject(contentMap.get("mailTittle").toString());
MimeMultipart multipart = new MimeMultipart();
BodyPart contentPart = new MimeBodyPart();
contentPart.setContent(contentMap.get("mailContent").toString(), "text/html;charset=UTF-8");
multipart.addBodyPart(contentPart);
if (attachments != null) {
for (File attachment : attachments) {
BodyPart attachmentPart = new MimeBodyPart();
DataSource source = new FileDataSource(attachment);
attachmentPart.setDataHandler(new DataHandler(source));
attachmentPart.setFileName(MimeUtility.encodeWord(attachment.getName()));
multipart.addBodyPart(attachmentPart);
}
}
mimeMessage.setContent(multipart, "UTF-8");
mimeMessage.saveChanges();
} catch (Exception mex) {
mex.printStackTrace();
}
return mimeMessage;
}
public static void sendEmail(Map<String, Object> contentMap) {
sendEmail(contentMap, null);
}
public static void sendEmail(Map<String, Object> contentMap, List<File> attaches) {
try {
Properties pros = new Properties();
pros.setProperty("mail.transport.protocol", "smtp");
pros.setProperty("mail.smtp.host", contentMap.get("host").toString());
pros.setProperty("mail.smtp.auth", "true");
Session session = Session.getInstance(pros);
if (attaches == null) {
MimeMessage msg = simpleMail(session, contentMap.get("mailFrom").toString(), contentMap.get("mailTo").toString(), contentMap.get("mailTittle").toString(), contentMap.get("mailContent").toString());
Transport.send(msg, contentMap.get("mailFrom").toString(), contentMap.get("passwd").toString());
System.out.println("Sent simpleMail successfully...");
} else {
MimeMessage mimeMessage = attachMail(session, contentMap, attaches);
Transport.send(mimeMessage, contentMap.get("mailFrom").toString(), contentMap.get("passwd").toString());
System.out.println("Sent attaches Email successfully...");
}
} catch (Exception mex) {
mex.printStackTrace();
}
}
}
测试用例
import com.itheima.utils.SMSUtil;
import com.itheima.utils.ValidateCodeUtils;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
public class sendMessage {
@Test
public void sendMessagea() {
Map map = new HashMap<>();
map.put("mailFrom","316*****@qq.com");
map.put("mailTo","16******4@163.com");
map.put("host","smtp.qq.com");
map.put("mailTittle","测试用例");
map.put("mailContent", ValidateCodeUtils.generateValidateCode4String(6));
map.put("passwd","av*******l**aj");
SMSUtil.sendEmail(map);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了