16.7 電子メール・テンプレートの管理

電子メール・テンプレートを作成することで、ユーザーがアプリケーションから電子メールを送信できるようにします。

ノート:

アプリケーションから電子メールを送信するには、インスタンス管理者がOracle APEX管理サービスにサインインし、「インスタンスの設定」ページにナビゲートして、「電子メール」属性を構成する必要があります。

関連項目:

16.7.1 電子メール・テンプレートの定義

アプリケーションの電子メール・テンプレートを定義します。電子メール・テンプレートには、HTMLフォーマットとプレーン・テキスト・フォーマットの両方が含まれます。

電子メール・テンプレートを定義するには:

  1. 共有コンポーネント・ページにナビゲートします。
    1. ワークスペースのホームページで、「アプリケーション・ビルダー」をクリックします。
    2. アプリケーションを選択します。
    3. アプリケーションのホームページで、「共有コンポーネント」をクリックします。
      共有コンポーネント・ページが表示されます。
  2. 「他のコンポーネント」で、「電子メール・テンプレート」を選択します。
  3. 電子メール・テンプレート・ページで、「作成」をクリックします。
    詳細ページが表示されます。

    ヒント:

    開始するには、ページの右側にある「サンプル・テンプレート」で使用可能なサンプルの電子メール・テンプレートを確認します。サンプルの電子メール・テンプレートをロードするには、単にそれを選択します。サンプルの電子メール・テンプレートの表示を参照してください。
  4. 次に、テンプレートを定義します。

    ヒント:

    「電子メールの件名」「HTMLフォーマット」または「プレーン・テキスト・フォーマット」には、#STRING_NAME#の形式を使用した置換文字列を挿入します。ページ・デザイナのプロセスの「プレースホルダ値」ダイアログまたはAPEX_MAIL APIを使用して、これらの文字列に値を渡すことができます。

  5. 「指定」で、次の項目を指定します。
    1. テンプレート名: このテンプレートのわかりやすい名前を入力します。
    2. 静的識別子: APEX_MAIL APIをコールするときにテンプレートを参照するために使用される静的文字列識別子。
    3. 電子メールの件名: 電子メールの件名に表示するテキストを入力します。置換文字列は、#STRING_NAME#形式で使用できます。ページ・デザイナのプロセスの「プレースホルダ値」ダイアログまたはAPEX_MAIL APIを使用して、これらの文字列に値を渡すことができます。
  6. 「HTMLフォーマット」で、次のステップを実行します。

    ヒント:

    置換文字列は、#STRING_NAME#形式で使用できます。ページ・デザイナのプロセスの「プレースホルダ値」ダイアログまたはAPEX_MAIL APIを使用して、これらの文字列に値を渡すことができます。
    1. ヘッダー: ヘッダーを定義します。
    2. 本文: 本文を定義します。基本的なマークアップを使用して、HTML電子メールの本文を書式設定できます。
    3. フッター: フッターを定義します。
    4. 詳細、HTMLテンプレート: サポートされている置換文字列のリストは、アイテムのヘルプを参照してください。
    5. (オプション)「デフォルトHTMLのロード」をクリックします。デフォルトHTMLは、HTMLテンプレートに表示されます。必要に応じて、デフォルトのHTMLテンプレートを編集します。
  7. プレーン・テキスト・フォーマット: 適切なテンプレートのデフォルト値を入力します。置換文字列は、#STRING_NAME#形式で使用できます。ページ・デザイナのプロセスの「プレースホルダ値」ダイアログまたはAPEX_MAIL APIを使用して、これらの文字列に値を渡すことができます。
  8. (オプション)コメント: このテンプレートを説明するコメントを入力します。
  9. 「電子メール・テンプレートの作成」をクリックします。

次に、ボタンおよびプロセスを作成してAPEX_MAIL APIをコールします。

  1. 「電子メールの送信」ボタンを追加します。
    1. 電子メールの送信元のアプリケーションに戻ります。
    2. 適切なページに移動するか、新規ページを作成します。
    3. ページ・デザイナで、電子メールを送信するためのボタンを追加します。
    4. 識別のプロセス(タイプ: 「電子メールの送信」)を作成します。
      「設定」フィールドに、電子メールを送信するための構成フィールドが表示されます。
    5. 必須フィールドに入力します。アドレス・フィールド(「宛先」、「CC」、「BCC」、「返信先」)には、&P2_CUST_EMAIL. (ピリオドを含む)という形式で置換文字列を含めることができます。
  2. 次のいずれかの操作を行います。
    • 電子メール・テンプレートの適用

      「設定」の「電子メール・テンプレート」で、前に定義したテンプレートを選択します。

      (オプション)「プレースホルダ値」ボタンをクリックして、「プレースホルダ値の設定」ダイアログを開きます。このダイアログには、電子メール・テンプレートで定義されているすべてのプレースホルダが表示され、静的値またはページやアプリケーション・アイテムの値をそれに割り当てることができます。ダイアログで、「アイテムまたは値」入力フィールドの右側にある「LOV」アイコンをクリックして、ページ・アイテムを選択します。

    • PL/SQLプロセスの適用

      APEX_MAIL APIをコールするPL/SQLプロセスを作成します。

      次の例を検討してください:

      begin
          apex_mail.send (
              p_to                 => 'steven.king@example.com',
              p_template_static_id => 'ORDER_CONFIRMATION',
              p_placeholders       => q'~
              {
                  "CUSTOMER_NAME": "Steven King",
                  "ORDER_NUMBER": 1234,
                  "ORDER_DATE": "02-Feb-2018",
                  "SHIP_TO": "Steven King",
                  "SHIPPING_ADDRESS_LINE_1": "2004 Charade Rd",
                  "SHIPPING_ADDRESS_LINE_2": "Seattle, Washinton",
                  "ITEMS_ORDERED": 3,
                  "ORDER_TOTAL": "$ 1,200.99",
                  "ORDER_URL": "http://domain/apex/f?p=&APP_ID"        
               }~' );
          apex_mail.push_queue;
      end;
  3. ページを保存します。
  4. ページを実行し、「メールの送信」ボタンをクリックします。

16.7.2 サンプルの電子メール・テンプレートの表示

サンプルの電子メール・テンプレート(「オーダー詳細のロード」、「イベント・リマインダのロード」または「スケジュール済停止のロード」)を表示します。

サンプルの電子メール・テンプレートを表示するには:

  1. 共有コンポーネント・ページにナビゲートします。
    1. ワークスペースのホームページで、「アプリケーション・ビルダー」をクリックします。
    2. アプリケーションを選択します。
    3. アプリケーションのホームページで、「共有コンポーネント」をクリックします。

      共有コンポーネント・ページが表示されます。

  2. 「他のコンポーネント」で、「電子メール・テンプレート」を選択します。
  3. 電子メール・テンプレート・ページで、「作成」をクリックします。
    詳細ページが表示されます。
  4. ページの右側で、「サンプル・テンプレート」リージョンを検索します。
    「サンプル・テンプレート」リージョンには、3つのテンプレートが含まれています。
    • オーダー詳細のロード

    • イベント・リマインダのロード

    • スケジュール済停止のロード

  5. テンプレートを選択します。たとえば、「オーダー詳細のロード」を選択します。
    テンプレートが表示されます。
  6. ページの下部にある「サンプルAPIの使用状況」リージョンを展開して、例を参照してください。次は、「オーダー詳細のロード」のAPIの例です。
    begin
        apex_mail.send (
            p_to                 => email_address_of_user,
            p_template_static_id => '',
            p_placeholders       => '{'
            '    "CUSTOMER_NAME":'           || apex_json.stringify( some_value )
            '   ,"ITEMS_ORDERED":'           || apex_json.stringify( some_value )
            '   ,"MY_APPLICATION_LINK":'     || apex_json.stringify( some_value )
            '   ,"ORDER_DATE":'              || apex_json.stringify( some_value )
            '   ,"ORDER_NUMBER":'            || apex_json.stringify( some_value )
            '   ,"ORDER_TOTAL":'             || apex_json.stringify( some_value )
            '   ,"ORDER_URL":'               || apex_json.stringify( some_value )
            '   ,"SHIPPING_ADDRESS_LINE_1":' || apex_json.stringify( some_value )
            '   ,"SHIPPING_ADDRESS_LINE_2":' || apex_json.stringify( some_value )
            '   ,"SHIP_TO":'                 || apex_json.stringify( some_value )
            '}' );
    end;
  7. 属性の編集、テンプレートの作成および「電子メールの送信」ボタンの作成については、「電子メール・テンプレートの定義」を参照してください。

16.7.3 動的テキストの組込みについて

既存の置換修飾子を使用して電子メール・テンプレートに動的テキストを指定します。

ノート:

テンプレート・ディレクティブは、電子メール・テンプレートの特定の属性でサポートされています。「テンプレート・ディレクティブの使用」を参照してください。

セキュリティ上の理由で、電子メール・テンプレートのプレースホルダ(#NAME#)で置換される値は、コンテキストに基づいて自動的にエスケープされます。つまり、HTML形式のテンプレートにはHTMLエスケープが含まれ、プレーン・テキスト・テンプレートには含まれません。これがご使用の環境での希望する動作でない場合、既存の置換修飾子を使用して、HTMLタグが含まれる動的テキストを入力できます。

  • #NAME!RAW#: テキストがそのままの状態で置換されます。

  • #NAME!STRIPHTML#: すべてのHTMLタグが削除されます。

電子メール・テンプレートの拡張

たとえば、次を指定してHTMLフォーマットの本文のテンプレートを拡張できます。

<tr>
        <th align="left">Additional Information</th>
        <td>#ADDITIONAL_INFO!RAW#</td>
</tr>

同様に、次を指定してプレーン・テキスト・フォーマットのテンプレートを拡張できます。

  Additional Info:  #ADDITIONAL_INFO!STRIPHTML#

サンプルのPL/SQL

PL/SQLコードは次のようになります。

begin
    apex_mail.send (
        p_to                 => 'steven.king@example.com',
        p_template_static_id => 'ORDER_CONFIRMATION',
        p_placeholders       => q'~
        {
            "CUSTOMER_NAME": "Steven King",
            "ORDER_NUMBER": 1234,
            "ORDER_DATE": "02-Feb-2018",
            "SHIP_TO": "Steven King",
            "SHIPPING_ADDRESS_LINE_1": "2004 Charade Rd",
            "SHIPPING_ADDRESS_LINE_2": "Seattle, Washinton",
            "ITEMS_ORDERED": 3,
            "ORDER_TOTAL": "$ 1,200.99",
            "ORDER_URL": "http://domain/apex/f?p=&APP_ID" 
               "ADDITIONAL_INFO": "We plan to deliver your ordered items <strong>tomorrow morning between 08:00 and 09:00</strong>       
         }~' );
    apex_mail.push_queue;
end;

16.7.4 電子メール・テンプレートの編集または削除

既存の電子メール・テンプレートを編集または削除します。

電子メール・テンプレートを編集または削除するには:

  1. 共有コンポーネント・ページにナビゲートします。
    1. ワークスペースのホームページで、「アプリケーション・ビルダー」をクリックします。
    2. アプリケーションを選択します。
    3. アプリケーションのホームページで、「共有コンポーネント」をクリックします。

      共有コンポーネント・ページが表示されます。

  2. 「他のコンポーネント」で、「電子メール・テンプレート」を選択します。
    電子メール・テンプレート・ページが表示されます。
  3. 電子メール・テンプレートを編集するには:
    1. 電子メール・テンプレート名をクリックします。
      テンプレートの詳細が表示されます。
    2. 対象となる属性を編集します。
    3. 「変更の適用」をクリックします。
  4. 電子メール・テンプレートを削除するには:
    1. 電子メール・テンプレート名をクリックします。
      テンプレートの詳細が表示されます。
    2. 「削除」をクリックします。
    3. 選択内容を確認して、「削除」をクリックします。

16.7.5 電子メール・テンプレートのコピー

既存の電子メール・テンプレートをコピーします。

電子メール・テンプレートをコピーするには:

  1. 共有コンポーネント・ページにナビゲートします。
    1. ワークスペースのホームページで、「アプリケーション・ビルダー」をクリックします。
    2. アプリケーションを選択します。
    3. アプリケーションのホームページで、「共有コンポーネント」をクリックします。

      共有コンポーネント・ページが表示されます。

  2. 「他のコンポーネント」で、「電子メール・テンプレート」を選択します。
    電子メール・テンプレート・ページが表示されます。
  3. 「コピー」をクリックします。
    電子メール・テンプレートのコピー・ウィザードが表示されます。
  4. 「電子メール・テンプレートのコピー」で、次の項目を指定します。
    1. コピー元: 電子メール・テンプレートのコピー元を選択します。オプションは次のとおりです。
      • このアプリケーション

      • その他のアプリケーション

    2. アプリケーション: このオプションは、「コピー元」が「その他のアプリケーション」に設定されている場合にのみ表示されます。電子メール・テンプレートのコピー元のアプリケーションを選択します。
    3. 電子メール・テンプレートのコピー: コピーする電子メール・テンプレートを選択します。
    4. 新しい名前: 新しい電子メール・テンプレートの名前を入力します。
    5. 新規静的識別子: コピーされた電子メール・テンプレートの一意の静的識別子を指定します。
    6. 「電子メール・テンプレートのコピー」をクリックします。