33 APEX_MAIL

APEX_MAILパッケージを使用してOracle APEXアプリケーションから電子メールを送信できます。このパッケージは、Oracleで提供されるUTL_SMTPパッケージをベースとして構築されています。このような依存性があるため、APEX_MAILを使用するには、UTL_SMTPパッケージがインストールされており、機能している必要があります。

APEX_MAILには次の3つの重要なプロシージャが含まれています。
  • アプリケーションから外部へ電子メール・メッセージを送信するには、APEX_MAIL.SENDを使用します。
  • APEX_MAIL_QUEUEに格納されたメール・メッセージを配信するには、 APEX_MAIL.PUSH_QUEUEを使用します。
  • アプリケーションから外部へ添付として電子メール・メッセージを送信するには、APEX_MAIL.ADD_ATTACHMENTを使用します。

APEXでは、データベース・ジョブORACLE_APEX_MAIL_QUEUEがインストールされます。これは、アクティブなメール・キューに格納されているすべてのメール・メッセージを定期的に送信します。

ノート:

APEX_MAILパッケージは、コールを実行するデータベース・ユーザーがAPEXワークスペースにマップされているかぎり、APEXアプリケーションのコンテキスト外から(SQL*Plusからやデータベース・スケジューラ・ジョブからなど)使用できます。データベース・ユーザーが複数のワークスペースにマップされている場合、次の例に示すように、まずAPEX_UTIL.SET_WORKSPACEまたはAPEX_UTIL.SET_SECURITY_GROUP_IDをコールする必要があります。APEX_MAILパッケージは、APEX_ADMINISTRATOR_ROLEロールが付与されていないかぎり、どのワークスペースにもマップされていないデータベース・ユーザーが使用することはできません。

- Example 1
apex_util.set_workspace(p_workspace => 'MY_WORKSPACE');

-- Example 2
FOR c1 in (
   select workspace_id
     from apex_applications
    where application_id = 100 )
LOOP
   apex_util.set_security_group_id(p_security_group_id => c1.workspace_id);
END LOOP;

参照: