S2Mai v0.9.0 の使い方

S2Mai(Mail Access Interface)は、インタフェースにアスペクトでメール送信機能を適用します。

サーバ設定

まず、全体に共通の設定を「mailProperties.dicon」というファイルに書いて、ルートパッケージに置きます。

デフォルトでは内容は下記のようになってます。

<component name="host">
    "localhost"
</component>
<component name="port">
    25
</component>
<component name="username">
    null
</component>
<component name="password">
    null
</component>
<component name="from">
    null
</component>
<component name="replyTo">
    null
</component>
<component name="returnPath">
    null
</component>
<component name="messageId">
    null
</component>
<component name="templateEncoding">
    "UTF-8"
</component>
<component name="connectionTimeout">
    10000
</component>
<component name="readTimeout">
    10000
</component>
<component name="mailCharset">
    "ISO-2022-JP"
</component>

このdiconファイルはjarにも入ってますので、デフォルト設定で問題なければ作成する必要はありません。

設定項目
host
SMTPサーバのホスト
port
SMTPのポート番号
username
SMTPにログインする必要がある場合、そのユーザー名
password
同じく、そのパスワード
templateEncoding
テンプレートのエンコーディング
connectionTimeout
SMTPサーバとの接続タイムアウト
readTimeout
SMTPサーバへの送受信時のタイムアウト
mailCharset
メールのエンコードに使用する文字コード

他プロパティは今の所見てません・・(忘れてた)。

基本的な使い方

まずメールの内容を保持するPOJOを作ります。

public class TestData{
    private String name;
    (setter、getter省略)
}

Maiを作ります。

public interface TestMai {
    void sendMail(TestData data);
}

メソッド名はなんでもかまいません。用途別に複数メソッドを定義してもいいです。

diconファイルを書いて、Maiをコンポーネントとして登録します。

■maitest.dicon

<include path="s2mai.dicon"/>
<component class="com.example.interceptors.TestMai">
    <aspect>s2MaiInterceptor</aspect>
</component>

s2mai.diconをincludeし、タグで、s2MaiInterceptorを適用します。

s2mai.diconはjarの中にありますのでカスタマイズしない限りは何もしなくていいです。

メールの設定を保持するdiconファイルを、Maiと同じパッケージに作ります。diconファイル名は、

  • Maiインタフェース名.dicon
  • Maiインタフェース名_メソッド名.dicon

の2通り指定出来ます。インタフェース名のみだと、各メソッド共通で適用されます。あるメソッドだけに適用したい場合は、_メソッド名をつけて下さい。

■TestMai_sendMail.dicon

<component class="com.ozacc.mail.Mail">
    <initMethod name="addTo"><arg>"rokugen@example.com"</arg></initMethod>
</component>

上記は、Toに「rokugen@example.com」を追加しています。ozaccさんのozacc-mail-libraryのMailクラスに直接設定してますので、詳しくはhttp://spring-ext.sourceforge.jp/oml/apidocs/com/ozacc/mail/Mail.htmlを参照して下さい。

テンプレートを作ります。ファイル名は、Maiインタフェース名_メソッド名.ftlにして下さい。テンプレートの一番上の行に、「Subject: (最後に半角スペース一個)」と書くと、それ以降を件名としてセットします。

■TestMai_sendMail.ftl

Subject: テストメールです。
${data.name}さんこんにちは。

mailProperties.diconのtemplateEncodingでUTF-8を指定してますので、UTF-8で保存します。POJOのプロパティを埋め込む場合には、「${data.property名}」と書きます。

で、実行します。

S2Container container = S2ContainerFactory.create("maitest.dicon");
TestMai mai = (TestMai) container.getComponent(TestMai.class);
TestData dto = new TestData();
dto.setName("六");
mai.sendMail(dto);

するとこんなメールが。

From:null
To:rokugen@example.com
(他省略)
Subject:テストメールです。

六さんこんにちは。

いじょう、0.1.0の機能でした。

しかし、これだと、メールの送信先をdiconに書かなきゃいけなかったり、書くにはozacc-mail-libraryのAPIを踏まえなきゃいけなかったりで、もうちょっとなんとかしたいですね。そこで0.9.0ですよ、と

つづく。