
项目配置
引入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置邮箱信息:
spring:
mail:
host: smtp.sina.com # 新浪邮箱
username: xxx@sina.com # 发件人邮箱地址
password: xxxxxxxxxxxx # 授权码
protocol: smtp # SMTP 协议
default-encoding: UTF-8 # 编码格式
properties:
mail:
debug: true # 开启Debug模式,打印发送邮件的日志信息
smtp:
auth: true
socketFactory:
class: javax.net.ssl.SSLSocketFactory
ssl:
enable: true
checkServerIdentity:
enable: true
starttls:
enable: true
发送纯文本邮件
@Value("${spring.mail.username}")
private String username;
@Test
void sendTextEmail(@Autowired JavaMailSender mailSender) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(username);
message.setTo("ijunfv@gmail.com");
message.setSubject("纯文本内容的邮件");
message.setText("<h2>跳转至Youtube</h2><a href=\"https://www.youtube.com\">https://www.youtube.com</a>");
mailSender.send(message);
log.info("邮件发送成功");
}
核心:使用SimpleMailMessage类
发送HTML格式的邮件
@Test
void sendHtmlEmail(@Autowired JavaMailSender mailSender) throws MessagingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, false);
messageHelper.setFrom(username);
messageHelper.setTo("ijunfv@gmail.com");
messageHelper.setSubject("HTML格式的邮件");
messageHelper.setText("<h2>跳转至Youtube</h2><a href=\"https://www.youtube.com\">https://www.youtube.com</a>", true);
mailSender.send(mimeMessage);
log.info("邮件发送成功");
}
核心:使用MimeMessageHelper类,setText方法第二个参数必须为True,否则发送的是纯文本。
发送包含附件的邮件
@Test
void send(@Autowired JavaMailSender mailSender) throws MessagingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true);
messageHelper.setFrom(username);
messageHelper.setTo("ijunfv@gmail.com");
messageHelper.setSubject("包含附件的邮件");
messageHelper.setText("<h2>跳转至Youtube</h2><a href=\"https://www.youtube.com\">https://www.youtube.com</a>", true);
messageHelper.addAttachment("6.png", new File("D:\\Images\\logo_200x200 (6).png"));
messageHelper.addAttachment("12.png", new File("D:\\Images\\logo_200x200 (12).png"));
mailSender.send(mimeMessage);
log.info("邮件发送成功");
}
核心:
- 创建MimeMessageHelper对象时,第二个参数必须为true,否则不能发送包含附件的邮件
- 使用addAttachment方法添加附件
发送内嵌附件的邮件
@Test
void sendInlineResourceEmail(@Autowired JavaMailSender mailSender) throws MessagingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true);
messageHelper.setFrom(username);
messageHelper.setTo("ijunfv@gmail.com");
messageHelper.setSubject("包含附件的邮件");
String rscId = "dhjsjd9889";
messageHelper.setText("<h2>跳转至Youtube</h2><a href=\"https://www.youtube.com\"><img src='cid:"+rscId+"' /></a>", true);
messageHelper.addInline(rscId, new File("D:\\Images\\logo_200x200 (6).png"));
mailSender.send(mimeMessage);
log.info("邮件发送成功");
}
核心:
- 创建具有唯一性的ID作为附件标识,比如rscId
- 使用addInline添加附件
- 在邮件内容中通过 cid:rscId 插入附件
小结
按邮件内容,可分为普通文本、HTML格式内容、添加附件、内嵌附件四种邮件。
上述已将完整代码列出,记得 一键三连^_^