此篇介紹 spring boot 內建 email 發送郵箱 這裡 用的是qq郵箱
添加 maven 依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
添加配置檔案:
spring:
mail:
host: smtp.qq.com
#你的QQ郵箱賬戶
username: [email protected]
#你的QQ郵箱第三方授權碼
password: xxx
#編碼類型
default-encoding: UTF-8
QQ郵箱第三方授權碼 需要在 QQ郵箱擷取
需要在 設定中找到賬戶的最下面
一般開啟第一個就可以了
我這 建立了 server 和 controller 目的為了配合 swagger 使用
@Service
public class EmailServer {
@Autowired
private JavaMailSender mailSender;
@Value("${spring.mail.username}")
private String from;
//普通郵件
public Map<String, Object> sendToEmail(String to, String title, String content) {
Map<String, Object> mp = new HashMap<String, Object>();
SimpleMailMessage message = new SimpleMailMessage();
if(to != null && title != null && content != null) {
try {
message.setTo(to);//收信人
message.setSubject(title);//主題
message.setText(content);//内容
message.setFrom(from);//發信人
mailSender.send(message);
mp.put("msg", 200);
} catch (Exception e) {
mp.put("msg", 500);
}
}else {
mp.put("msg", 1017);
}
return mp;
}
//HTML郵件
public Map<String, Object> sendToHTMLEmail(String to, String title, String content) {
Map<String, Object> mp = new HashMap<String, Object>();
if(to != null && title != null && content != null) {
try {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setTo(to);
helper.setSubject(title);
helper.setText(content, true);//true代表支援html
helper.setFrom(from);
mailSender.send(message);
mp.put("msg", 200);
} catch (Exception e) {
mp.put("msg", 500);
}
}else {
mp.put("msg", 1017);
}
return mp;
}
}
@RestController
@RequestMapping("/email")
@Api(tags = "郵件相關接口")
@CrossOrigin(origins = "*", maxAge = 3600)
public class EmailController{
@Autowired
protected EmailServer email;//郵箱
@ApiOperation(value="發送簡單郵箱")
@PostMapping("/sendToEmail")
public Map<String, Object> sendToEmail(@RequestBody Map<String, Object> map) {
return email.sendToEmail((String)map.get("to"), (String)map.get("title"), (String)map.get("content"));
}
@ApiOperation(value="發送HTML郵箱")
@PostMapping("/sendToHTMLEmail")
public Map<String, Object> sendToHTMLEmail(@RequestBody Map<String, Object> map) {
return email.sendToHTMLEmail((String)map.get("to"), (String)map.get("title"), (String)map.get("content"));
}
}
推薦一個比較全的spring boot 發送郵箱
//發送圖檔需要添加
File file = new File("img_url");
FileSystemResource res = new FileSystemResource(file);
helper.addInline("001", res);
//測試時加入 <img width='250px' src='cid:001'>