1、Maven引用
<!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api --><dependency><groupId>javax.mail</groupId><artifactId>javax.mail-api</artifactId><version>1.6.2</version></dependency><dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.6.2</version></dependency>
2、Mail工具类:mailUtils
package 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.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import java.io.File;
import java.util.*;/*** @author : HMF* className mailUtils* description 邮件工具类* date: 2022/3/13 13:18**/public class mailUtils {/*** 发送简单的文本邮件* @param contentMap 邮件配置和邮件内容*/public static void sendSimpleMail(Map<String, Object> contentMap){//获取系统属性Properties pros = new Properties();pros.setProperty("mail.transport.protocol", "smtp");// 使用的协议pros.setProperty("mail.smtp.host", contentMap.get("host").toString());// 发件人的邮箱的SMTP服务器地址pros.setProperty("mail.smtp.auth", "true");// 需要请求认证//设置邮件服务器Session session = Session.getInstance(pros);//创建默认的MimeMessage 对象MimeMessage msg = new MimeMessage(session);try {//邮件发送人msg.setFrom(contentMap.get("mailFrom").toString());//邮件接收人msg.setRecipients(Message.RecipientType.TO, contentMap.get("mailTo").toString());//邮件标题头msg.setSubject(contentMap.get("mailTittle").toString());//邮件发送日期msg.setSentDate(new Date());//邮件文本内容msg.setContent(contentMap.get("mailContent").toString(), "text/html;charset=UTF-8");//保存邮件msg.saveChanges();Transport.send(msg, contentMap.get("mailFrom").toString(), contentMap.get("passwd").toString());}catch (Exception mex){mex.printStackTrace();}}/*** 发送带有附件的邮件* @param contentMap 邮件配置和邮件内容* @param attachments 邮件附件* @return MimeMessage*/public static void SendAttachMail(Map<String, Object> contentMap, List<File> attachments){//获取系统属性Properties pros = new Properties();pros.setProperty("mail.transport.protocol", "smtp");// 使用的协议pros.setProperty("mail.smtp.host", contentMap.get("host").toString());// 发件人的邮箱的SMTP服务器地址pros.setProperty("mail.smtp.auth", "true");// 需要请求认证//设置邮件服务器Session session = Session.getInstance(pros);// 创建邮件对象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();Transport.send(mimeMessage, contentMap.get("mailFrom").toString(), contentMap.get("passwd").toString());}catch (Exception mex){mex.printStackTrace();}}
}
3、执行和邮件示例
调用
public class Test{public static void main(String[] args) {//发送方信息配置Map<String,Object> map = new HashMap<>();map.put("host","smtp.exmail.qq.com");map.put("mailFrom","hmf@xxx.com");map.put("passwd","xxx");map.put("mailTo","xxx@qq.com");//标题和内容配置map.put("mailTittle","测试发邮件,邮件主题");map.put("mailContent","测试发邮件,邮件内容");//发送简单邮件sendSimpleMail(map);//附件配置List<File> attaches = new ArrayList<>();File attach1 = new File("./data.csv");File attach2 = new File("./11.log");attaches.add(attach1);attaches.add(attach2);//发送带附件邮件SendAttachMail(map,attaches);}
}
简单邮件示例:
带附件邮件示例: