Oracle APEXからの電子メールの送信

APEX_MAILパッケージを使用して、Autonomous DatabaseにデプロイされたOracle APEXアプリケーションから電子メールを送信できます。

APEX_MAILを使用する前に、Oracle APEXから電子メールを配信するSMTPサーバーを構成する必要があります。Autonomous Database上のOracle APEXは、Oracle Cloud Infrastructure Email Deliveryサービスおよびサード・パーティの電子メール・プロバイダをサポートしています。

OCI Email Deliveryの構成

Oracle APEXインスタンスは、OCI Email Deliveryサービスを利用して、APEXアプリケーションから電子メールを送信できます。

OCI Email Deliveryサービスを使用するようにAPEX_MAIL機能を構成するには:

  1. 電子メール配信用のSMTP接続エンドポイントを指定します。ステップ4で、エンドポイントをAPEXインスタンスのSMTPホストとして構成します。現在のリージョンで電子メール配信を使用できない場合は、追加のOracle Cloud Infrastructureリージョンをサブスクライブする必要がある可能性があります。詳細は、SMTP接続の構成を参照してください。
  2. 電子メール配信用のSMTP資格証明を生成します。APEXインスタンスでは、Eメールの送信時に資格証明を使用してEmail Deliveryサーバーで認証します。詳細は、SMTP資格証明の作成を参照してください。
  3. 電子メール配信の承認済送信者を作成します。APEX_MAIL.SENDコールの「送信元」として、アプリケーションの電子メール送信元アドレスとして、またはSMTP_FROMインスタンス・パラメータで、使用するすべての電子メール・アドレスに対して、このステップを完了する必要があります。詳細は、承認済送信者の管理を参照してください。
  4. SQLクライアントを使用してADMINユーザーでAutonomous Databaseに接続し、APEX_INSTANCE_ADMIN.SET_PARAMETERを使用して次のSMTPパラメータを構成します:
    • SMTP_HOST_ADDRESS: ステップ1のSMTP接続エンドポイントを指定します。
    • SMTP_USERNAME: ステップ2のSMTP資格証明のユーザー名を指定します。
    • SMTP_PASSWORD: ステップ2のSMTP資格証明のパスワードを指定します。
    • SMTP_HOST_PORT: このパラメータのデフォルト値を保持します(587)
    • SMTP_TLS_MODE: このパラメータのデフォルト値の保持(STARTTLS)
    たとえば:
    BEGIN
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_HOST_ADDRESS', 'smtp.email.us-phoenix-1.oci.oraclecloud.com');
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_USERNAME', 'ocid1.user.oc1.username');
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_PASSWORD', 'password');
      COMMIT;
    END;
    /

    詳細は、APEX_INSTANCE_ADMINを参照してください。

詳細は、電子メール配信の概要を参照してください。

サード・パーティのEメール・プロバイダの構成

Oracle APEXインスタンスは、サード・パーティの電子メール・プロバイダを利用して、APEXアプリケーションから電子メールを送信できます。

APEXでサード・パーティの電子メール・プロバイダを構成する前に、次の前提条件が満たされていることを確認してください:

  • Autonomous Databaseがプライベート・エンドポイントを使用するように構成されている必要があります。
  • 電子メール・プロバイダのSMTPエンドポイント(ポート25または587)には、Autonomous DatabaseがプロビジョニングされているVirtual Cloud Network (VCN)およびサブネットからアクセスできる必要があります。

詳細は、プライベート・エンドポイントを使用したネットワーク・アクセスの設定を参照してください。

前述の前提条件が満たされた後:

  1. SMTPエンドポイントの次のアクセス制御リストをADMINとして追加します(private_targetパラメータに注意してください)。
    BEGIN
      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => 'smtp.example.com',
        ace => XS$ACE_TYPE(
          privilege_list => XS$NAME_LIST('SMTP'),
          principal_name => APEX_APPLICATION.g_flow_schema_owner,
          principal_type => XS_ACL.ptype_db),
        private_target => true);
    END;
    /
    ノート

    ROUTE_OUTBOUND_CONNECTIONSデータベース・プロパティをPRIVATE_ENDPOINTに設定した場合、APEXからアクセスするために、個々のSMTPエンドポイントのアクセス制御リストを定義する必要はありません。詳細は、プライベート・エンドポイントを使用したアウトバウンド接続のセキュリティの強化を参照してください。
  2. SQLクライアントを使用して、Autonomous DatabaseにADMINユーザーとして接続し、APEX_INSTANCE_ADMIN.SET_PARAMETERを使用して次のSMTPパラメータを構成します。サード・パーティの電子メール・プロバイダが認証を必要としない場合は、SMTP_USERNAMEおよびSMTP_PASSWORDパラメータをスキップします。
    • SMTP_HOST_ADDRESS: ステップ1のSMTP接続エンドポイントを指定します。
    • SMTP_HOST_PORTパラメータの有効な値は25または587です
    • SMTP_TLS_MODEパラメータの値をYに設定します。

    たとえば:

    BEGIN
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_HOST_ADDRESS', 'smtp.example.com');
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_HOST_PORT', '587');
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_TLS_MODE', 'Y');
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_USERNAME', 'username');
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_PASSWORD', 'password');
      COMMIT;
    END;
    /

    詳細は、APEX_INSTANCE_ADMINを参照してください。

Eメール構成の検証

電子メール・プロバイダがAPEX_MAILで使用する準備ができていることを確認するステップを示します。

  1. ADMINとしてSQLクライアントを使用して電子メール構成設定を検証します。
    BEGIN
      APEX_INSTANCE_ADMIN.VALIDATE_EMAIL_CONFIG;
    END;
    /

    エラーが報告された場合("ORA-29279: SMTP permanent error: 535 Authentication credentials invalid"など)、SMTPパラメータまたはVirtual Cloud Network (VCN)構成を調整して検証ステップを繰り返します。

    詳細は、APEX_INSTANCE_ADMINを参照してください。

  2. APEX SQLワークショップを使用してテスト電子メールを送信します。OCI Email Deliveryを使用している場合は、p_fromパラメータが承認された送信者の1つと一致していることを確認してください。たとえば:
    BEGIN
      APEX_MAIL.SEND(
        p_from => 'alice@example.com',
        p_to   => 'bob@example.com',
        p_subj => 'Email from Oracle Autonomous Database',
        p_body => 'Sent using APEX_MAIL');
    END;
    /

    詳細は、APEX_MAILを参照してください。

  3. APEXインスタンスで電子メール配信をモニターするには:
    1. APEX管理サービスにサインインします。
    2. 「インスタンスの管理」ページを開きます。
    3. 「メタデータの管理」セクションの「メール・キュー」リンクをクリックします。
    または、SQLクライアントを使用してAPEX_MAIL_QUEUEおよびAPEX_MAIL_LOGビューを問い合せます。

Oracle APEXからの電子メールの送信に関するノート

Autonomous DatabaseインスタンスからOracle APEXで電子メール・プロバイダを操作するためのノートを提供します。

Oracle APEXで電子メール・プロバイダを操作する場合は、次の点に注意してください。

  • 24時間以内に、ワークスペースごとに1,000通の電子メールのデフォルト制限があります。この制限は、Oracle APEX管理サービスで更新または削除することも、WORKSPACE_EMAIL_MAXIMUMインスタンス・パラメータを設定することもできます。OCI Email Deliveryサービスを使用している場合、サービスによって追加の制限が課される可能性があります。
  • OCI Email Deliveryサービスを使用する場合、可能なすべての「送信元」アドレスに対して承認済送信者を設定する必要があります。そうしないと、メールは拒否されます。詳細は、承認済送信者の管理を参照してください。