1.添加jar包
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.5.5</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.5</version>
</dependency>
2.常量配置类
public class Constant {
//发送邮箱主机
public static final String host = "smtp.163.com";
//发送邮箱的账号
public static final String smtpFromMail = "188*****7495@163.com";
//授权码
public static final String authorizatioCode = "Wl*****046";
//端口
public static final int port = 25;
//发送者名称
public static final String personal = "test";
}
3.邮箱工具类
@Slf4j
public class EmailUtils {
public static boolean send(String toMail, String subject, String content, String fileName, InputStream is) {
boolean isFlag = false;
try {
Properties props = new Properties();
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", Constant.host);
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props);
session.setDebug(false);
MimeMessage message = new MimeMessage(session);
try {
message.setFrom(new InternetAddress(Constant.smtpFromMail, Constant.personal));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(toMail));
message.setSubject(subject);
message.addHeader("charset", "UTF-8");
/*添加正文内容*/
Multipart multipart = new MimeMultipart();
BodyPart contentPart = new MimeBodyPart();
contentPart.setText(content);
contentPart.setHeader("Content-Type", "text/html; charset=UTF-8");
multipart.addBodyPart(contentPart);
/*添加附件*/
MimeBodyPart fileBody = new MimeBodyPart();
DataSource source = new ByteArrayDataSource(is, "application/msexcel");
fileBody.setDataHandler(new DataHandler(source));
// 中文乱码问题
fileBody.setFileName(MimeUtility.encodeText(fileName));
multipart.addBodyPart(fileBody);
message.setContent(multipart);
message.setSentDate(new Date());
message.saveChanges();
Transport transport = session.getTransport("smtp");
transport.connect(Constant.host, Constant.port, Constant.smtpFromMail, Constant.authorizatioCode);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
isFlag = true;
} catch (Exception e) {
log.error("邮件发送异常");
isFlag = false;
}
} catch (Exception e) {
log.error("邮件发送异常");
}
return isFlag;
}
public static void sendMail(String downloadFilePath, String[] toMailList, String subject, String content, String fileName) {
try {
FileInputStream fileInputStream = new FileInputStream(downloadFilePath);
XSSFWorkbook workBook = new XSSFWorkbook(fileInputStream);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
workBook.write(baos);
baos.flush();
byte[] bt = baos.toByteArray();
for (int i = 0; i < toMailList.length; i++) {
EmailUtils.send(toMailList[i], subject, content, fileName, new ByteArrayInputStream(bt, 0, bt.length));
}
} catch (Exception e) {
log.error("邮件发送异常");
}
}
}
Slf4j注解是日志的注解。请参考下面链接自行配置https://blog.csdn.net/u010286027/article/details/86652194
4.发送邮件案例
//收件者列表
String[] toMailList = {"123456789@qq.com", "987654321@qq.com"};
EmailUtils.sendMail(excelPath, toMailList, "邮件标题", "", "文件名称.doc");