前言
最近在做郵件發送的服務,正常來說 SpringBoot 整合mail還是很方便的,然而來了新的需求:A請求使用郵箱C發送,B請求使用郵箱D發送,也就是說我們需要配置兩套發送服務。
單實例
首先我們來看下單個服務的配置:
spring.mail.host=smtp.mxhichina.com
[email protected]
spring.mail.password=123456
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
其他的不用管,我們只需要在用到的時候注入以下即可:
@Autowired
private JavaMailSender mailSender;//執行者
如果大家對如何加載配置以及初始化感興趣,可以瞭解下 spring-boot-autoconfigure 的原理。
多實例
由於 mail 並沒有像數據庫那樣提供多數據源,這裏只能我們自己手動獲取了:
/**
* 創建發送器
*/
public class MailUtil {
public static JavaMailSenderImpl createMailSender(){
JavaMailSenderImpl sender = new JavaMailSenderImpl();
sender.setHost("smtp.mxhichina.com");
sender.setPort(25);
sender.setUsername("[email protected]");
sender.setPassword("123456");
sender.setDefaultEncoding("Utf-8");
Properties p = new Properties();
p.setProperty("mail.smtp.timeout",1000+"");
p.setProperty("mail.smtp.auth","true");
sender.setJavaMailProperties(p);
return sender;
}
}
這裏,順便說一個小功能,在發送郵件的時候,如何自定義顯示發件人名稱:
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom("[email protected]","爪哇筆記");
最後我們在使用的時候,只需要根據不同的請求使用不同的 sender 就可以了。