Email Connector を使用したメールの送信

Email Connector では、SMTP および SMTPS 経由でのメッセージの送信ができます。

コネクタの設定

サーバーに保存されているメールのリストを作成するには、個別の設定種別を使用できます。

  • SMTP

  • SMTPS (TLS により保護)

SMTP 設定種別

SMTP 設定の例を次に示します。

SMTP 設定
<email:smtp-config name="smtp">
    <email:smtp-connection host="smtp.gmail.com" port="995" user="user1@domain.com" password="#passwordvalue!"/>
</email:smtp-config>

セキュアな設定種別

SMTPS 接続種別では、TLS コンテキストを入力できる TLS 設定項目が提供されます。この設定では、SSL/TLS 暗号化を有効にして、セキュアな SMTP プロトコルバージョン (SMTPS) 経由で暗号化メッセージを送信します。

SMTPS の例を次に示します。

TLS を使用した SMTP 設定
<email:smtp-config name="smtp">
    <email:smtps-connection host="pop.gmail.com" port="995" user="user2@domain.com" password="#passwordvalue"/>
        <tls:context enabledProtocols="TLSv1.2,SSLv3">
            <tls:key-store path="aKeystore" password="password"/>
            <tls:trust-store path="aTruststore.jks" password="changeit"/>
        </tls:context>
    </email:smtps-connection>
</email:smtp-config>

メールの送信

メールを送信する例を次に示します。

<email:send config-ref="smtp" subject="IMPORTANT!" fromAddress="user3@domain.com">
    <email:to-addresses>
        <email:to-address value="user1@domain.com"/>
        <email:to-address value="user2@domain.com"/>
    </email:to-addresses>
    <email:body contentType="text/html">
        <email:content><![CDATA["<h1>Hello this is an important message</h1>"]]></email:content>
    </email:body>
</email:send>

上の例では、送信メールの主受信者アドレスが ​to-addresses​ に含まれます。​fromAddress​ 属性はメールの送信者アドレス、​subject​ はメールの件名です。

body​ は ​content​ テキストと、コンテンツの MIME タイプ (​text/xml​、​text/plain​ など) を特定する ​contentType​ で構成されます。​body​ を指定しない場合、デフォルトでメッセージペイロードのコンテンツが使用されます。このペイロードが ​text​ でない場合、操作は ​EMAIL:SEND​ エラーで失敗します。

添付ファイルの送信

SMTP 経由で添付ファイルを送信する場合、DataWeave を使用して添付ファイルを処理する必要があります。

この例のフローでは、File Connector を使用して JSON ファイルを読み取った後、Email Connector を使用してファイルのコンテンツを添付ファイルとして SMTP 経由で送信します。

<flow name="attachment">
  <file:read path="/file.json"/>
  <email:send config-ref="config">
      <email:to-addresses>
          <email:to-address value="example@domain.com"/>
      </email:to-addresses>
      <email:body>
          <email:content><![CDATA["<h1>Hello this is an important message</h1>"]]></email:content>
      </email:body>
      <email:attachments>
        #[{
          'json-attachment' : payload
        }]
      </email:attachments>
  </email:send>
</flow>

このように、​email:attachments​ では、各要素が添付ファイルになっている DataWeave 式が期待されます。たとえば、上の例では、​json-attachment​ という名前の新しい添付ファイルが追加されます。​payload​ は、File Connector により読み取られた JSON ファイルのコンテンツです。

メディア種別が異なる複数の添付ファイルを送信できます。たとえば、JSON 要素の後にテキスト要素を送信し、さらにファイルも送信できます。これを行うには、次のようにそれらを添付ファイル要素に追加します。

</flow>
    <set-variable variableName="json" value="#[output application/json --- {address: '221B Baker Street'}]" mimeType="application/json"/>
    <set-variable variableName="textPlain" value="This is the email text attachment for John Watson" mimeType="text/plain"/>
    <set-variable variableName="octetStream" value="#[vars.textPlain]" mimeType="application/octet-stream"/>

    <email:send config-ref="config">
        <email:to-addresses>
            <email:to-address value="user4@domain.com"/>
        </email:to-addresses>
        <email:body contentType="text/plain">
            <email:content>Email Content</email:content>
        </email:body>
        <email:attachments>#[
            {
                'text-attachment' : vars.textPlain,
                'json-attachment' : vars.json,
                'stream-attachment' : vars.octetStream
            }]
        </email:attachments>
    </email:send>

    <logger level="INFO" doc:name="Logger" message="#['Message Id ' ++ correlationId as String]" />
</flow>

各添付ファイルには、以前に設定された独自のメディア種別が含まれています。

Send 操作は、SMTP サーバーへのメールの送信に使用されるすべての情報 (要求パス、ヘッダーなど) を含むメッセージ属性セクションに ​HttpRequestAttributes​ オブジェクトがあるメッセージを返します。Send 操作が実行される直前に設定されたペイロードも、操作の出力ペイロードになります。