看到很多关于SpringBoot发送邮件的文章,感觉都有点繁琐,所以整理了一下我自己感觉比较简洁的方法给初学者快速上手。
引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置文件
# 以.yml文件为例
spring:
mail:
# 以阿里邮箱为例
host: smtp.mxhichina.com
username: xxxx@test.com
password: password
port: 80
P.S. 此处使用80端口的原因可以参考此文:
解决阿里云服务器25端口发送邮件失败【最简单的方法】
代码基础内容
// 此处 import 语句仅仅作为提示,实际情况下,编译器会自动帮你引入。
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
...
@Slf4j
@Service
public class MailDeliveryService{
@Resource
private JavaMailSenderImpl mailSender;
...
}
1. 简单文本邮件发送
// 邮件内容
String mailSubject = "简单邮件主题"
String rawContent = "{0},您好!今天是{1},祝您生活愉快。--测试方"
String userName = "王思聪"
String dateStr = new SimpleDateFormat("yyyy年MM月dd日").format(new Date()))
String content= MessageFormat.format(rawContent, userName, dateStr)
// 邮件发送
MimeMessage message= mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
// 发信人
helper.setFrom("xxxx@test.com");
// 收信人
helper.setTo("yyyy@test.com");
// 主题
helper.setSubject(mailSubject);
// 内容
helper.setText(content)
// 发送
mailSender.send(mimeMessage);
log.info("yyyy 邮件处理成功");
2. 复杂邮件发送
此为邮件HTML模板:
<html><body>
<!--左对齐-->
<div style='text-align:left'>{0},您好!</div>
<!--缩进-->
<div style="text-indent: 2em">今天是{1},祝您生活愉快。</div>
<!--图片 cid是你为该图片设定的唯一id值-->
<img src='cid:pictureID'>
<!--右对齐-->
<div style='text-align:right'>--测试方</div>
</body></html>
String mailSubject = "复杂邮件主题"
// 上述HTML的字符串
// 因为在代码中显示要换行,所以用 + 号连接,实际都是存在数据库的完整字符串
String rawContent =
"<html><body>" +
"<div style='text-align:left'>{0},您好!</div>" +
"<div style='text-indent: 2em'>今天是{1},祝您生活愉快。</div>" +
"<img src='cid:pictureID'>" +
"<div style='text-align:right'>--测试方</div>" +
"</body></html>";
String userName = "靓仔"
String dateStr = new SimpleDateFormat("yyyy年MM月dd日").format(new Date()))
String content= MessageFormat.format(rawContent, userName, dateStr)
// 邮件发送
MimeMessage message= mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
// 发信人(带有发件人自定义名称)
helper.setFrom("测试平台<xxxx@test.com>");
// 收信人
String[] toList = {"apple@test.com", "banana@test.com"};
helper.setTo(toList);
// 抄送
String[] ccList = {"cherry@test.com", "durian@test.com"};
helper.setCc(ccList);
// 密送(暗抄送)
String[] bccList = {"mango@test.com", "orange@test.com"};
helper.setBcc(bccList);
// 主题
helper.setSubject(mailSubject);
// 内容(布尔值代表前面的字符串是HTML)
helper.setText(content, true);
// 插入图片(嵌入式资源)
helper.addInline("pictureID", new File("/etc/pic.jep"));
// 加入附件
helper.addAttachment("文件名.pdf", new File("/etc/file.pdf"));
// 发送
mailSender.send(mimeMessage);
log.info("邮件处理成功");