org.springframework.mail.javamail.JavaMailSender,其提供了许多简单易用的方法,可发送简单的邮件、HTML格式的邮件、带附件的邮件,并且可以创建邮件模板。
添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
填写配置文件application.properties
#配置SMTP服务器地址
spring.mail.host=smtp.qq.com
#SMTP服务器端口
spring.mail.port=587
#配置邮箱用户名
spring.mail.username=XXXX@qq.com
#配置密码
#注意.是申请的邮箱授权码,不是登录密码
spring.mail.password=XXXX
#默认编码
spring.mail.default-encoding=UTF-8
#配置SSl加密工厂
spring.mail.properties.mail.smtp.socketFactoryClass=javax.net.ssl.SSLSocketFactory
启动DEBUG模式
spring.mail.properties.mail.debug=true
QQ邮箱获取授权密码
一:发送简单邮件
/** 纯文本EMail*/
@Autowired
private JavaMailSender jms;
@Value("${spring.mail.username}")
private String from;
@RequestMapping("SimpleEmail")
public String sendSimpleEmail() {
try {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo("8888@qq.com"); // 接收地址
message.setSubject("一封简单的邮件"); // 标题
message.setText("使用Spring Boot发送简单邮件。"); // 内容
jms.send(message);
return "SimpleEmail发送成功";
} catch (Exception e) {
e.printStackTrace();
return e.getMessage();
}
}
二:发送HTML邮件
/**HTML格式Email*/
@RequestMapping("HtmlEmail")
public String sendHtmlEmail() {
MimeMessage message = null;
try {
message = jms.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo("8888@qq.com"); // 接收地址
helper.setSubject("一封HTML格式的邮件"); // 标题
// 带HTML格式的内容
StringBuffer sb = new StringBuffer("<p style='color:#42b983'>使用Spring Boot发送HTML格式邮件。</p>");
helper.setText(sb.toString(), true);
jms.send(message);
return "HtmlEmail发送成功";
} catch (Exception e) {
e.printStackTrace();
return e.getMessage();
}
}
helper.setText(sb.toString(), true);中的true表示发送HTML格式邮件。
三:发送带附件的邮件
@RequestMapping("AttachmentsMail")
public String sendAttachmentsMail() {
MimeMessage message = null;
try {
message = jms.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo("8889@qq.com"); // 接收地址
helper.setSubject("一封带附件的邮件"); // 标题
helper.setText("详情参见附件内容!"); // 内容
// 传入附件
FileSystemResource file = new FileSystemResource(new File("G:/A/项目测试.txt"));
helper.addAttachment("项目文档.txt", file);
jms.send(message);
return "AttachmentsMail发送成功";
} catch (Exception e) {
e.printStackTrace();
return e.getMessage();
}
}
四:发送带图片邮件
@RequestMapping("InlineMail")
public String sendInlineMail() {
MimeMessage message = null;
try {
message = jms.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo("8889@qq.com"); // 接收地址
helper.setSubject("一封带图片的邮件"); // 标题
helper.setText("<html><body>日落图:<img src='cid:img'/></body></html>", true); // 内容
// 传入附件
FileSystemResource file = new FileSystemResource(new File("src/main/resources/static/img/sunshine.jpg"));
helper.addInline("img", file);
jms.send(message);
return "InlineMail发送成功";
} catch (Exception e) {
e.printStackTrace();
return e.getMessage();
}
}
helper.addInline(“img”, file);中的img和图片标签里cid后的名称相对应。
使用模版发送邮件
添加Thymeleaf依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
controller
package com.springboot.demo.controller;
import java.io.File;
import javax.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
@RestController
@RequestMapping("/email")
public class EmailController {
@Autowired
private JavaMailSender jms;
@Value("${spring.mail.username}")
private String from;
@Autowired
private TemplateEngine templateEngine;
@RequestMapping("sendTemplateEmail")
public String sendTemplateEmail(String code) {
MimeMessage message = null;
try {
message = jms.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo("888888@qq.com"); // 接收地址
helper.setSubject("邮件摸板测试"); // 标题
// 处理邮件模板
Context context = new Context();
context.setVariable("code", code);
String template = templateEngine.process("emailTemplate", context);
helper.setText(template, true);
jms.send(message);
return "发送成功";
} catch (Exception e) {
e.printStackTrace();
return e.getMessage();
}
}
}
访问http://localhost/email/sendTemplateEmail?code=5267