Class DirectMailer

java.lang.Object
io.leandev.appfuse.mail.DirectMailer
All Implemented Interfaces:
Mailer, org.springframework.mail.javamail.JavaMailSender, org.springframework.mail.MailSender

public class DirectMailer extends Object implements Mailer, org.springframework.mail.javamail.JavaMailSender

綁定單一 JavaMailSender 的具體 Mailer

政策於建構時套用

外寄安全政策(防火牆/白名單/debug/改寄/特殊訊息)是建構參數—— 不給 MailOutboundPolicy 就建不出來,「所有 Mailer 走同一段政策碼」由建構子擔保, 不依賴呼叫端記得套用。政策內容見 MailOutboundPolicy

預設寄件者(defaultFrom)

建構時烘入寄件者字串(Name <addr> 或純位址);compose() 據此預填 from, 消費端組信不需要知道寄件身分從哪來(系統設定或範圍專屬設定)。

  • Constructor Details

    • DirectMailer

      public DirectMailer(org.springframework.mail.javamail.JavaMailSender delegate, MailOutboundPolicy policy, String defaultFrom)
      建構並套用外寄政策
      Parameters:
      delegate - 底層 JavaMailSender
      policy - 環境層外寄政策(於建構時套用)
      defaultFrom - 預設寄件者(Name <addr> 或純位址;null 表示無預設)
    • DirectMailer

      public DirectMailer(org.springframework.mail.javamail.JavaMailSender delegate, MailOutboundPolicy policy, String defaultFrom, String subjectPrefixOverride)
      建構並套用外寄政策(含主旨前綴覆寫)
      Parameters:
      subjectPrefixOverride - 特殊訊息主旨前綴覆寫(範圍專屬設定用);空則沿用政策預設
  • Method Details

    • compose

      public MimeMessageBuilder compose()
      組一封信;getDefaultFrom() 非空時預填 from(呼叫端可再覆寫)
      Specified by:
      compose in interface Mailer
    • getDefaultFrom

      public String getDefaultFrom()
    • isFirewallEnabled

      public boolean isFirewallEnabled()
    • getAllowedDomains

      public Set<String> getAllowedDomains()
    • isRedirectEnabled

      public boolean isRedirectEnabled()
    • getRedirectAddress

      public String getRedirectAddress()
    • getNoticeSubjectPrefix

      public String getNoticeSubjectPrefix()
    • getNoticeHeaders

      public Map<String,String> getNoticeHeaders()
    • isDebugEnabled

      public boolean isDebugEnabled()
      檢查 JavaMail debug 模式是否啟用
    • createMimeMessage

      @NonNull public jakarta.mail.internet.MimeMessage createMimeMessage()
      Specified by:
      createMimeMessage in interface org.springframework.mail.javamail.JavaMailSender
    • createMimeMessage

      @NonNull public jakarta.mail.internet.MimeMessage createMimeMessage(@NonNull InputStream contentStream) throws org.springframework.mail.MailException
      Specified by:
      createMimeMessage in interface org.springframework.mail.javamail.JavaMailSender
      Throws:
      org.springframework.mail.MailException
    • send

      public void send(@NonNull jakarta.mail.internet.MimeMessage mimeMessage) throws org.springframework.mail.MailException
      Description copied from interface: Mailer
      寄出一封已組好的 MimeMessage(外寄政策——防火牆/改寄/特殊訊息——在此套用)
      Specified by:
      send in interface org.springframework.mail.javamail.JavaMailSender
      Specified by:
      send in interface Mailer
      Throws:
      org.springframework.mail.MailException
    • send

      public void send(@NonNull jakarta.mail.internet.MimeMessage... mimeMessages) throws org.springframework.mail.MailException
      Specified by:
      send in interface org.springframework.mail.javamail.JavaMailSender
      Throws:
      org.springframework.mail.MailException
    • send

      public void send(@NonNull org.springframework.mail.javamail.MimeMessagePreparator mimeMessagePreparator) throws org.springframework.mail.MailException
      Specified by:
      send in interface org.springframework.mail.javamail.JavaMailSender
      Throws:
      org.springframework.mail.MailException
    • send

      public void send(@NonNull org.springframework.mail.javamail.MimeMessagePreparator... mimeMessagePreparators) throws org.springframework.mail.MailException
      Specified by:
      send in interface org.springframework.mail.javamail.JavaMailSender
      Throws:
      org.springframework.mail.MailException
    • send

      public void send(@NonNull org.springframework.mail.SimpleMailMessage simpleMessage) throws org.springframework.mail.MailException
      Specified by:
      send in interface org.springframework.mail.MailSender
      Throws:
      org.springframework.mail.MailException
    • send

      public void send(@NonNull org.springframework.mail.SimpleMailMessage... simpleMessages) throws org.springframework.mail.MailException
      Specified by:
      send in interface org.springframework.mail.MailSender
      Throws:
      org.springframework.mail.MailException
    • testConnection

      public Mailer.MailConnectionTestResult testConnection()
      測試連接 - 檢查底層 JavaMailSender 是否能正常連接
      Specified by:
      testConnection in interface Mailer
    • sendTestEmail

      public DirectMailer.MailSendTestResult sendTestEmail(String testRecipient, String testSubject)

      發送測試郵件 - 實際發送一封測試郵件來驗證完整功能

      刻意繞過外寄政策(直接走底層 delegate):這是平台維運驗證「線路通不通」的動作, 收件者由維運者顯式指定,不應被防火牆/改寄攔截。

    • getMailSenderInfo

      public DirectMailer.MailSenderInfo getMailSenderInfo()
      取得底層 JavaMailSender 資訊