SpringBoot開發案例之郵件多實例發送

前言

最近在做郵件發送的服務,正常來說 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 就可以了。

項目源碼

碼雲:https://gitee.com/52itstyle/spring-boot-mail

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章