package com.rosa.utils;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.*;
import javax.mail.util.ByteArrayDataSource;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
/**
* 测试发送邮件,并且携带附件
* @author Ben
* @date 2022/9/16 11:34
*/
public class Email {
//服务器主机
public static String emailHost = "smtp.xx.com.cn";
//发件人地址
public static String senderAddress = "xiongbenjun@xx.com.cn";
//发件人账户名
public static String senderAccount = "xiongbenjun";
//发件人账户密码
public static String senderPassword = "**********";
public void sendEmail(ArrayList<?> list,String title,String text,String filePath) throws Exception {
//1、连接邮件服务器的参数配置
Properties props = new Properties();
props.setProperty("mail.smtp.host", emailHost);//设置邮件服务器主机名
props.setProperty("mail.transport.protocol", "smtp");//设置传输协议
props.setProperty("mail.smtp.auth", "true");//发送服务器需要身份验证
Session session = Session.getDefaultInstance(props);//设置环境信息
session.setDebug(true); //设置调试信息在控制台打印出来
MimeMessage message = new MimeMessage(session);
MimeMultipart multipart = null;
BodyPart contentPart = null;
Transport transport = null;
message.setFrom(senderAddress);//设置发件人
InternetAddress[] address = new InternetAddress[list.size()];
for (int i = 0; i < list.size(); i++) {
address[i] = new InternetAddress(list.get(i).toString());
}
//添加收件人
message.addRecipients(Message.RecipientType.TO, address);
//设置抄送人(两个)可有可无抄送人:
//List<InternetAddress> addresses = Arrays.asList(new InternetAddress("1457034247@qq.com"), new InternetAddress("575814158@qq.com"));
//InternetAddress[] addressesArr = (InternetAddress[]) addresses.toArray();
//message.setRecipients(Message.RecipientType.CC, addressesArr);
//设置密送人 可有可无密送人:
//InternetAddress toBCC = new InternetAddress(toEmail);
//message.setRecipient(Message.RecipientType.BCC, toBCC);
message.setSubject(title); //设置主旨
multipart = new MimeMultipart();
contentPart = new MimeBodyPart(); // 用来设置正文的
contentPart.setText(text);
multipart.addBodyPart(contentPart);
if (("".equals(filePath))||(filePath == null)) {
}else {
MimeBodyPart attrBodyPart = new MimeBodyPart(); // 用来设置附件的
File file = new File(filePath);
DataSource dataSource = new FileDataSource(file);
attrBodyPart.setDataHandler(new DataHandler(dataSource));
///imagepart.setHeader("Content-ID", "<img02>");//value要和图片的cid对应才能嵌入在html中,否则就会变成附件
// 设置编码格式,使附件能正常显示中文名
attrBodyPart.setFileName(MimeUtility.encodeText(file.getName(), "UTF-8", "B"));
multipart.addBodyPart(attrBodyPart);
}
message.setContent(multipart, "text/html;charset=UTF-8");
message.saveChanges();
transport = session.getTransport("smtp");
transport.connect(emailHost, senderAddress, senderPassword);
transport.sendMessage(message, message.getAllRecipients());
//5、关闭邮件连接
transport.close();
}
}
导入包:
<!-- Email -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
Java发送邮件
于 2022-09-17 10:40:14 首次发布