前情提要
以目前IT系統功能來看,郵件功能是非常重要的一個功能。例如:找回密碼、郵箱驗證,郵件動態碼、忘記密碼,郵件營銷等,都需要用到郵件功能。結合當下最流行的spring boot微服務,推出了spring-boot-starter-mail郵件支持包。
功能使用
引入maven包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
相關參數配置(以QQ郵箱為例)
private static JavaMailSenderImpl javaMailSender;
static {
javaMailSender = new JavaMailSenderImpl();
javaMailSender.setHost("smtp.qq.com");//鏈接服務器
//javaMailSender.setPort(25);//默認使用25端口發送
javaMailSender.setUsername("QQ郵箱");//賬號
javaMailSender.setPassword("授權碼");//授權碼
javaMailSender.setDefaultEncoding("UTF-8");
Properties properties = new Properties();
//properties.setProperty("mail.debug", "true");//啟用調試
//properties.setProperty("mail.smtp.timeout", "1000");//設置鏈接超時
//設置通過ssl協議使用465端口發送、使用默認端口(25)時下面三行不需要
properties.setProperty("mail.smtp.auth", "true");//開啟認證
properties.setProperty("mail.smtp.socketFactory.port", "465");//設置ssl端口
properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
javaMailSender.setJavaMailProperties(properties);
}
郵件發送代碼(此方法支持文本和html郵件)
@ResponseBody
@RequestMapping("/mailSend")
public void mailSend(){
log.info("--------------[mail/mailSend] start------------------");
try {
MimeMessage message=javaMailSender.createMimeMessage();
MimeMessageHelper helper=new MimeMessageHelper(message,true);
helper.setFrom("272286717@qq.com","272286717");
helper.setTo("qsf179636252@163.com");
helper.setSubject("測試郵件");
helper.setText("測試郵件內容",true);
javaMailSender.send(message);
} catch (Exception e) {
log.error("郵件發送失敗", e.getMessage());
e.printStackTrace();
}
log.info("--------------[mail/mailSend] end------------------");
}
測試
測試地址
http://localhost:6677/api/mail/mailSend
日志輸出

登錄163郵箱查看是否收到郵件

總結
- spring boot對mail的封裝支持非常好,使用方便,簡單幾行代碼就可以把郵件集成進來
- QQ郵箱和163郵箱,使用的授權碼,而不是登錄密碼,如果是郵箱登錄密碼,郵件是發不出去的
