Class MailOutboundPolicy.Builder

java.lang.Object
io.leandev.appfuse.mail.MailOutboundPolicy.Builder
Enclosing class:
MailOutboundPolicy

public static final class MailOutboundPolicy.Builder extends Object
政策建構器;build() 驗證組合並回傳不可變政策
  • Method Details

    • firewall

      public MailOutboundPolicy.Builder firewall(boolean enabled)
      防火牆開關(白名單以 allowedDomains 宣告;開而白名單空=全擋)
    • allowedDomains

      public MailOutboundPolicy.Builder allowedDomains(String... domains)
      防火牆放行網域(空白項自動略過)
    • debug

      public MailOutboundPolicy.Builder debug(boolean enabled)
      JavaMail debug 模式
    • redirect

      public MailOutboundPolicy.Builder redirect(boolean enabled, String to)
      收件者改寄(開關與目標分開宣告,對齊設定檔的兩個 key;enabledto 空白 屬設定錯誤,build() 會擋)
    • redirectTo

      public MailOutboundPolicy.Builder redirectTo(String to)
      收件者改寄便捷宣告:非空即啟用、空白=不啟用
    • noticeSubjectPrefix

      public MailOutboundPolicy.Builder noticeSubjectPrefix(String prefix)
      特殊訊息主旨前綴的環境預設(如 [TEST] );空白=不加
    • noticeHeader

      public MailOutboundPolicy.Builder noticeHeader(String name, String value)
      新增一個特殊訊息自訂 MIME 標頭(如 X-Environment: test
    • noticeHeaders

      public MailOutboundPolicy.Builder noticeHeaders(Map<String,String> headers)
      整批新增特殊訊息自訂 MIME 標頭
    • mailConfigured

      public MailOutboundPolicy.Builder mailConfigured(boolean configured)
      這個部署是否明確配置了郵件——決定危險組合要 fail-fast 還是只 WARN。 參考接線以「app.mail.type 已設」為訊號;不可拿「provider bean 存在」當訊號 (參考實作恆註冊 provider,會讓乾淨 clone 一啟動就失敗)。
    • build

      public MailOutboundPolicy build()

      驗證政策組合並建構

      「不誤發真實郵件」採 production-safe 預設 + fail-fast。三擇一:

      • redirect 生效:所有外寄郵件收合改寄到單一信箱、不觸及真實收件者。 redirect 優先於 firewall 短路,故此情況 firewall 不生效(firewallActive = false)。
      • firewall 開 + 有 allowed-domains:僅放行白名單網域(測試環境放行外部客戶網域)。
      • firewall 關:全寄真實收件者(僅正式環境,建構時 WARN 留痕)。

      危險組合的處置依 mailConfigured:已明確配置郵件 → 拋 IllegalStateException (啟動失敗);未配置 → WARN 留痕、政策仍生效(全擋=寄不出去,不是誤寄)。

      Throws:
      IllegalStateException - 危險組合且部署已明確配置郵件