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

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

ノート:

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

関連項目:

16.12.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.12.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.12.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.12.4 電子メール・テンプレートの編集または削除

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

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

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

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

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

16.12.5 電子メール・テンプレートのコピーまたはサブスクライブ

現在のアプリケーションまたは別のアプリケーションから、電子メール・テンプレートをコピーします。別のアプリケーションから電子メール・テンプレートをコピーする場合は、それをサブスクライブすることもできます。

ヒント:

サブスクリプションにより、開発者はワークスペース内の複数のアプリケーション間で共有コンポーネントを再利用できます。サブスクリプションについてさらに学習するには、「共有コンポーネント・サブスクリプションの使用」を参照してください。

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

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

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

    4. 「ユーザー・インタフェース」で、「電子メール・テンプレート」を選択します。

      電子メール・テンプレート・ページが表示されます。レポートには、「サブスクライブ元」、「サブスクリプション・ステータス」および「サブスクライバ」の各列が含まれていることに注意してください。

  2. 現在のアプリケーション内で電子メール・テンプレートをコピーするには:
    1. 電子メール・テンプレートを検索して、「コピー」列の「コピー」をクリックします。
      電子メール・テンプレートのコピー・ウィザードが表示されます。
    2. 新しい名前 - コピーした電子メール・テンプレートの名前を入力します。
    3. 新規静的識別子 - コピーした電子メール・テンプレートの一意の静的識別子を指定します。
    4. 「電子メール・テンプレートのコピー」をクリックします。
  3. 別のアプリケーションから電子メール・テンプレートをコピーするには:
    1. 「電子メール・テンプレート」ページの「タスク」リージョンで、「別のアプリケーションからコピー」をクリックします。
      電子メール・テンプレートのコピー・ウィザードが表示されます。
    2. アプリケーション - コピー元のアプリケーションを選択します。
    3. 電子メール・テンプレートのコピー - コピーする電子メール・テンプレートを選択します。
    4. サブスクライブ - 電子メール・テンプレートをサブスクライブするには、このフラグを有効にします。
    5. 「電子メール・テンプレートのコピー」をクリックします。

16.12.6 電子メール・テンプレートのサブスクライブ

「電子メール・テンプレート」、「詳細」ページで電子メール・テンプレートをサブスクライブします。

サブスクリプションにより、開発者はワークスペース内の複数のアプリケーション間で共有コンポーネントを再利用できます。共有コンポーネント・サブスクリプションの詳細は、「共有コンポーネント・サブスクリプションの使用」を参照してください。

ヒント:

電子メール・テンプレートをコピーして「サブスクライブ」オプションを有効にすることによって、電子メール・テンプレートをサブスクライブすることもできます。「電子メール・テンプレートのコピーまたはサブスクライブ」を参照してください。

現在のアプリケーションで電子メール・テンプレートをサブスクライブするには:

  1. 「電子メール・テンプレート」ページにナビゲートします:
    1. 「ワークスペース」ホームページにナビゲートします。
    2. 「アプリケーション・ビルダー」アイコンをクリックします。
    3. アプリケーションを選択します。
    4. アプリケーションのホームページで、「共有コンポーネント」をクリックします。
    5. 「ナビゲーションと検索」で、「電子メール・テンプレート」をクリックします。

      電子メール・テンプレート・ページが表示されます。レポートには、「サブスクライブ元」、「サブスクリプション・ステータス」および「サブスクライバ」の各列が含まれていることに注意してください。

  2. 電子メール・テンプレートを選択します。
    「電子メール・テンプレート」、「詳細」ページが表示されます。
  3. 電子メール・テンプレートをサブスクライブするには:
    1. 「サブスクリプション」リージョンを見つけます。
    2. サブスクリプション、サブスクライブ元 - サブスクライブするマスター電子メール・テンプレートを選択して、「変更の適用」をクリックします。
    3. 選択内容を確認して、「サブスクライブ」をクリックします。

      サブスクライブされたコンポーネントは、選択したマスターから自動的にリフレッシュされます。

  4. サブスクリプションをリフレッシュするには:
    1. 「サブスクリプション」リージョンを見つけます。
    2. サブスクリプション、電子メール・テンプレートのリフレッシュ- 電子メール・テンプレートがすでにサブスクライブされている場合は、「電子メール・テンプレートのリフレッシュ」をクリックします。
    3. 「変更の適用」をクリックします。
  5. 電子メール・テンプレートからサブスクライブ解除するには:
    1. 「サブスクリプション」リージョンを見つけます。
    2. サブスクリプション、サブスクライブ解除 - 「サブスクライブ解除」をクリックします。

16.12.7 「電子メール・テンプレート」レポートへのアクセス

「電子メール・テンプレート」ページの適切なタブをクリックして、電子メール・テンプレートの「使用状況」および「履歴」レポートを表示します。

「電子メール・テンプレート」レポートを表示するには:

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

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

  2. 「ユーザー・インタフェース」で、「電子メール・テンプレート」を選択します。
    電子メール・テンプレート・ページが表示されます。
  3. 該当するタブをクリックします。
    • 使用状況 - アプリケーション内で電子メール・テンプレートが使用される場所が表示されます。
    • 履歴 - このアプリケーションで電子メール・テンプレートに加えられた最近の変更を表示します。