POJOのプロパティでGO

ToとかCcとか、動的にセットしたいですね。そう云う時はPOJOにそのものずばりの名前のプロパティを作ってあげます。先ほどのPOJOにプロパティを追加しましょう。

public class TestData{
    private String name;
    private InternetAddress from;
    private List to;
    private MailAddress[] cc;
    private String[] bcc
    private String subject;
    
    (setter、getter省略)
}

そうすると、ここで設定された値が、diconファイルの記述内容、Maiに書いたアノテーションのどれよりも優先されて反映されます。ただし、Subjectはテンプレートに書いたのが最優先です。

設定可能なプロパティは下記です。

プロパティ名 メール設定 指定可能な型
subject 件名 String
from From String,InternetAddress,MailAddress
to To String,InternetAddress,MailAddressおよびそれぞれの配列もしくはList
cc Cc String,InternetAddress,MailAddressおよびそれぞれの配列もしくはList
bcc Bcc String,InternetAddress,MailAddressおよびそれぞれの配列もしくはList
replyTo Reply-To String,InternetAddress,MailAddress
returnPath Return-Path String,InternetAddress,MailAddress

指定可能な型以外の場合はエラーにはなりませんが、nullが設定されます。また、fromなどを配列もしくはListにした場合は、最後の要素が反映されます(たぶん)。

Listの場合、要素の型がString、InternetAddress、MailAddress混在でも大丈夫です。

他に添付ファイル用のプロパティもありますが、それは後述します。

また、サーバの設定をmailProperties.diconで設定しましたが、POJOからの設定も可能です。特定のメールのみホストを切り替えたい、などの要件がある場合にはこちらで。

プロパティ名 サーバ設定 指定可能な型
host SMTPサーバ String
port SMTPポート String,Integer,int
username SMTPユーザー名 String
password SMTPパスワード String

で、添付ファイルにも対応していますが、それはまた次回の講釈で(芥川隆之風)。