メールコネクタを使用したメールのリストの作成

メールコネクタでは、フローの任意の部分からメールのリストを作成できます。 (この機能は、Mule 3 のトランスポートからの変更点です。Mule 3 のトランスポートでは、インバウンドエンドポイントポーリングの結果としてのみメールを取得できました)。

POP3 と IMAP の両方の設定に list 操作が含まれます。このセクションでは両方を対象とし、それらの違いについて説明します。以下の例では list-pop3 または list-imap が使用されている場合がありますが、特に指定のない限り、すべての例が両方の設定に適用されます。

コネクタの設定

サーバに保存されているメールのリストを作成するための 2 つの設定があります。

  • POP3 設定

  • IMAP 設定

この両方の設定で、接続の確立に必要な基本パラメータセット (サーバの hostport、および保護されたメールサーバに接続するための usernamepassword) が共有されます。ただし、ユーザ名とパスワードで保護されていないサーバがあるため、usernamepassword は省略可能です。

POP3 および IMAP 設定の例を次に示します。

POP3 設定
<email:pop3-config name="pop3-config">
    <email:pop3-connection host="pop.gmail.com" port="995" user="pablo.musumeci@mulesoft.com" password="#netherlands!"/>
</email:pop3-config>
IMAP 設定
<email:imap-config name="imap-config">
    <email:imap-connection host="imap.gmail.com" port="912" user="pablo.musumeci@mulesoft.com" password="#netherlands!"/>
</email:imap-config>

これらの例は似ています。違いについては、「メールコネクタテクニカルリファレンス」の「設定」セクションを参照してください。

セキュアな接続

IMAP および POP3 設定では、セキュアなプロトコルバージョン (POP3S および IMAPS) で動作するセキュアな接続種別が提供されます。この種別を使用すると、SSL/TLS 暗号化を可能にする TLS コンテキストを設定できます。

IMAPS の例を次に示します。

TLS を使用した IMAP 設定
<email:imap-config name="tls">
    <email:imaps-connection host="${port}" port="${port}">
        <tls:context enabledProtocols="TLSv1.2,SSLv3">
            <tls:key-store path="aKeystore" password="password"/>
            <tls:trust-store path="aTruststore.jks" password="changeit"/>
        </tls:context>
    </email:imaps-connection>
</email:imap-config>

TLS コンテキストは IMAPS と同様に POP3S 接続でも使用できます。

メールのリストの作成

List 操作では、パラメータ化されたメールボックスフォルダに存在する設定済みメールボックスサーバ内のすべてのメールが返されます。

メールボックス内のメールのリストを作成するための基本構文を以下に示します。

POP3
<email:list-pop3 config-ref="pop3-config" mailboxFolder="INBOX"/>
IMAP
<email:list-imap config-ref="imap-config" mailboxFolder="INBOX"/>

上の例では、INBOX フォルダに存在する設定済みメールボックスサーバ内のすべてのメールが返されます。

config-ref 属性は、設定の例で宣言されている設定を参照しています。

メールからのデータの取得

受信メールでは、メール本文とすべての添付ファイルを含むメールの内容がペイロード内で保持されています。次の例では、取得したすべてのメールを反復処理します。

<flow name="retrieveWithAttachments">
    ...
    <email:list-imap config-ref="imap-config"/>
    <foreach>
        <set-variable variableName="email-content" value="payload.body" />
        <set-variable variableName="json-attachment" value="payload.attachments.json" />
    </foreach>
</flow>

ペイロード内の 1 つのメールを操作する場合、payload.body を使用してメールの内容にアクセスします。上の例では、本文を email-content という変数に設定します。

メールの添付ファイルにアクセスするには、payload.attachments.{nameOfTheAttachment} を使用できます。上の例では、取得したメールで保持されている json という添付ファイルを新しい変数 json-attachment 内に設定します。

属性

メールのリストを作成する場合、メールの内容だけでなくメールのメタデータ (件名、送信元アドレス、宛先アドレス、受信日など) にも関心があることがあります。これらの属性は、使用している設定の種別によって異なります。たとえば、IMAP プロトコルでは、recentseendeletedanswered フラグなど、取得したメールに関するより多くのメタデータが提供されます。

メールコネクタは Mule メッセージ属性を使用してこの情報にアクセスします。一方、メッセージのペイロードには常にメールの内容が含まれます。

メール属性の構造についての詳細は、メールモジュールドキュメントリファレンスを参照してください。

一致

メールのリストを作成する場合、<email:pop3-matcher> および <email:imap-matcher> 要素を使用して、特定の条件に一致するメールを絞り込むことができます。これらの要素では、メールを処理するまたは処理しないために使用できる条件を定義します。

次の IMAP マッチャーの例では、[0-9] 正規表現に一致せず、まだ参照されていない件名を持つメールが却下されます。

<email:list-imap config-ref="config">
    <email:imap-matcher subjectRegex="[0-9]" seen="EXCLUDE"/>
</email:list-imap>

すべてのマッチャー属性は省略可能であり、提供されていない場合は無視できます。また、AND 演算子の下で相互に関連します。つまり、すべての条件が true である必要があります。

上の例では、特定のコンポーネント専用の再利用できない内部のマッチャーを宣言しています。ただし、マッチャーは次の pop3-matcher のように再利用可能な要素として (名前付きの最上位要素として) 宣言できます。

<email:pop3-matcher name="pop3Matcher"
                    subjectRegex="Email Subject"
                    fromRegex="@mulesoft"/>

<flow name="listEmails">
  ...
  <file:list pop3-matcher="pop3Matcher" />
  ...
</flow>

IMAP マッチャーと POP3 マッチャーの比較

IMAP プロトコルでは、POP3 よりも詳細な絞り込みを可能にする、メールに関するメタデータが提供されます。

POP3 マッチャーには次のパラメータが含まれます。

<email:pop3-matcher
  receivedSince="2015-06-03T13:21:58+00:00"
  receivedUntil="2015-07-03T13:21:58+00:00"
  sentSince="2015-05-03T13:21:58+00:00"
  sentUntil="2015-06-03T13:21:58+00:00"
  subjectRegex="BETA:"
  fromRegex="@mulesoft"/>

IMAP マッチャーは次のようになります。

<email:imap-matcher
  receivedSince="2015-06-03T13:21:58+00:00"
  receivedUntil="2015-07-03T13:21:58+00:00"
  sentSince="2015-05-03T13:21:58+00:00"
  sentUntil="2015-06-03T13:21:58+00:00"
  subjectRegex="BETA:"
  fromRegex="@mulesoft"
  recent="EXCLUDE|INCLUDE|REQUIRE"
  seen="EXCLUDE|INCLUDE|REQUIRE"
  deleted="EXCLUDE|INCLUDE|REQUIRE"
  answered="EXCLUDE|INCLUDE|REQUIRE"/>

IMAP マッチャーには recentseendeletedanswered パラメータが含まれます。

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub