SpringBoot開發案例之郵件多例項傳送

daqianmen發表於2021-09-09

圖片描述

前言

最近在做郵件傳送的服務,正常來說 SpringBoot 整合mail還是很方便的,然而來了新的需求:A請求使用郵箱C傳送,B請求使用郵箱D傳送,也就是說我們需要配置兩套傳送服務。

單例項

首先我們來看下單個服務的配置:

spring.mail.host=smtp.mxhichina.com
spring.mail.username=admin@52itstyle.com
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("admin@52itstyle.com");
        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("345849402@qq.com","爪哇筆記");

最後我們在使用的時候,只需要根據不同的請求使用不同的 sender 就可以了。

專案原始碼

碼雲:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1727/viewspace-2812465/,如需轉載,請註明出處,否則將追究法律責任。

相關文章