/**
* @Description 带附件发送邮件方法
* @param targetAddress 目标邮箱
* @param subject 主题
* @param innerMessage 内容
* @param attachmentList 附件列表
* @return void
**/
public static void sendMailWithAttachment(String targetAddress, String subject, String innerMessage, List<String> attachmentList) {
Properties properties = new Properties();
try {
properties.put("mail.smtp.host", getHost(from));
properties.put("mail.smtp.auth", "true");
MimeMessage message = new MimeMessage(Session.getInstance(properties,
new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(
username, password);
}
}));
message.setFrom(new InternetAddress(from, fromName, charSet));
message.setRecipient(Message.RecipientType.TO, new InternetAddress(
targetAddress));
message.setSubject(subject);
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(innerMessage, "text/html;charset=utf-8");
// MimeMultipart类是一个容器类,包含MimeBodyPart类型的对象
Multipart mainPart = new MimeMultipart();
mainPart.addBodyPart(messageBodyPart);
// 存在附件
for (int i = 0; i < attachmentList.size(); i ++) {
messageBodyPart = new MimeBodyPart();
File file = new File(attachmentList.get(i));
if(file.exists()){
// 得到数据源
FileDataSource fileDataSource = new FileDataSource(file);
// 得到附件本身并至入BodyPart
messageBodyPart.setDataHandler(new DataHandler(fileDataSource));
// 得到文件名同样至入BodyPart
messageBodyPart.setFileName(MimeUtility.encodeText(file.getName()));
mainPart.addBodyPart(messageBodyPart);
}
}
// 将MimeMultipart对象设置为邮件内容
message.setContent(mainPart);
// 发送邮件
Transport.send(message);
logger.info("/SendMailUtil/sendMailWithAttachment 邮件发送成功");
} catch (Exception e) {
logger.error("/SendMailUtil/sendMailWithAttachment" + e.getMessage());
e.printStackTrace();
}
}
其他
private static final String from = "发件人邮箱";
private static final String fromName = "发件人名称";
private static final String charSet = "UTF-8";
private static final String username = "发件人用户名";
private static final String password = "发件人密码";
import javax.mail.*;
import javax.mail.internet.*;