新規メールを受信した場合にフローをトリガー

Email Connector ではリスナー (Studio の UI では [On New Email (新規メール)] と呼ばれる) が提供されます。リスナーはメールボックスのメールフォルダーをポーリングし、その中の未読のメールを見つけて、見つかったメールごとに新しいメッセージを生成します。

この機能の重要な部分は、メールが新規であることをどのように判別するかです。 この判別には、次の 3 つの戦略があります。

  • deleteAfterRetrieve​ パラメーターを true に設定する。この設定では、メールは処理された後にメールボックスフォルダーから削除されるため、次回のポーリングで見つかったすべてのメールが新規になります。

  • マッチャーを使用して、ポーリングするメールを絞り込む。

  • IMAP プロトコルでは、​watermark​ パラメーターを使用して、前回のポーリングの実行後に受信されたメールのみを選択することもできます。

リスナー

Email Connector では、IMAP プロトコルと POP3 プロトコル用の同様に機能する 2 つのリスナーが提供されます。ただし、使用する XML 要素の名前はメールプロトコルによって異なります。

  • listener-imap

  • listener-pop3

コンポーネントのポーリング頻度を変更するには、リスナーの ​scheduling-strategy​ を設定できます。

例: IMAP メールリスナー (新規メールトリガー)
<flow name="OnNewEmail">
    <email:listener-imap config-ref="imap-config">
        <scheduling-strategy>
            <fixed-frequency frequency="2000"/>
        </scheduling-strategy>
    </email:listener-imap>
    <flow-ref name="processEmail"/>
</flow>
例: POP3 メールリスナー (新規メールトリガー)
<flow name="OnNewEmail">
    <email:listener-pop3 config-ref="pop3-config">
        <scheduling-strategy>
            <fixed-frequency frequency="2000"/>
        </scheduling-strategy>
    </email:listener-pop3>
    <flow-ref name="processEmail"/>
</flow>

取得後に削除

POP3 および IMAP リスナーでは、​deleteAfterRetrieve​ パラメーターを ​true​ に設定することで、ポーリングされたメールの処理が完了した後にメールを削除できます。 この機能は、メールが誤って削除されないようにデフォルトで無効になっています。

例: 取得後に削除
<flow name="OnNewEmailDeleteAfterProcessed">
    <email:listener-pop3 config-ref="pop3-config" deleteAfterRetrieve="true">
        <scheduling-strategy>
            <fixed-frequency/>
        </scheduling-strategy>
    </email:listener-pop3>
    <flow-ref name="processEmail"/>
</flow>

このパラメーターは POP3 プロトコルで一般的に使用されます。POP3 プロトコルではウォーターマークがサポートされないためです。処理されたメールを削除することで、次に処理されるメールは新規メールであることを確信できます。

この機能では、設定済みのメールボックスフォルダーからメールが​削除される​ことを理解しておくことが重要です。

ウォーターマーク

Email Connector では、IMAP プロトコル経由のメールの場合にメールにウォーターマークを適用し、受信日に基づいてメールを絞り込むことができます。

listener-imap​ トリガーを使用してウォーターマークを有効にするには、単に watermark パラメーターを ​true​ に設定します。これで、割り当てられたメッセージには、前回のポーリングの実行後に受信されたメールのみが含まれます。

例: IMAP ウォーターマークメールリスナー
<flow name="OnNewEmailWatermark">
    <email:listener-imap config-ref="imap-config" watermark="true">
        <scheduling-strategy>
            <fixed-frequency/>
        </scheduling-strategy>
    </email:listener-imap>
    <flow-ref name="processEmail"/>
</flow>

マッチャー

カスタムマッチャー設定では、割り当てるメッセージを絞り込む別の方法が提供されます。

POP3 および IMAP リスナーには、日付、アドレス、件名、フラグ (参照済み、回答済みなど) によりメールを絞り込むことができる独自のマッチャーがあります。

例: マッチャーを使用したメールリスナー
<flow name="OnNewEmailWatermark">
    <email:listener-imap config-ref="imap-config">
        <scheduling-strategy>
            <fixed-frequency/>
        </scheduling-strategy>
        <email:imap-matcher subjectRegex="IMPORTANT"/>
    </email:listener-imap>
    <flow-ref name="processEmail"/>
</flow>

上の例では、件名に「IMPORTANT」の単語が含まれるメールメッセージのみが割り当てられます。

添付ファイルの命名戦略

Email Connector には、添付ファイルの命名戦略を指定できる List および On New Email 操作用のパラメーターがあります。このパラメーターは設定レベルで定義されますが、操作レベルで上書きできます。

パラメーターの次の値のいずれかを指定できます。

  • NAME​ (デフォルト)
    値が ​NAME​ に設定されている場合、コネクタは添付ファイルの ​Content-Disposition​ 行にある ​filename​ 項目の値に基づいて添付ファイルに名前を付けます (これは、添付ファイルの名前を設定するための標準の推奨される方法です)。​filename​ 項目が存在しないか空の場合、添付ファイルの名前は「Unnamed」になります。 複数の添付ファイルに名前がない場合、個別に対応できるように、それらの名前は「Unnamed」、「Unnamed_1」、「Unnamed_2」のようになります。

  • NAME_HEADERS
    値が ​NAME_HEADERS​ に設定されている場合、コネクタは最初に ​Content-Disposition​ 行にある ​filename​ 項目の名前の取得を試みます (​NAME​ を使用する場合と同様)。それに失敗した場合、コネクタは添付ファイルの ​Content-Type​ 行にある ​name​ ヘッダーを検索します。​name​ ヘッダーが存在しないか空の場合、添付ファイルの名前は「Unnamed」になります。

  • NAME_HEADERS_SUBJECT
    値が ​NAME_HEADERS_SUBJECT​ に設定されている場合、コネクタは前述の 2 つの戦略を試みます。両方に失敗した場合、コネクタは添付ファイル自体がメール (ネストされたメッセージ) であるかを確認し、メールの件名を検索します。件名が空でない場合、添付ファイルの名前には件名が使用されます。それ以外の場合、添付ファイルの名前は「Unnamed」になります。

命名戦略を使用したメール設定
<email:imap-config name="gmail" attachmentNamingStrategy="NAME_HEADERS">
  <email:imap-connection host="imap.gmail.com" port="993" user="user@gmail.com" password="mypassword">
  </email:imap-connection>
</email:imap-config>
命名戦略を上書きするメールリスナー (On New Email)
<email:listener-imap config-ref="gmail" attachmentNamingStrategy="NAME_HEADERS_SUBJECT">
    <scheduling-strategy>
        <fixed-frequency/>
    </scheduling-strategy>
</email:listener-imap>