カスタムメールプロバイダーを構成する

カスタムメールプロバイダを使用して、任意のメールプロバイダーをセットアップできます。デフォルトのメールプロバイダーでは非対応のメールプロバイダーにメッセージを送信するには、Actionsコードエディターを活用できます。また、メール配信プロセスを完全に制御することで、以下のようなユースケースに対応できます。

  • 再試行の失敗

  • 受信者の変更

  • メッセージペイロードの変更

  • Organization固有のロジックの作成


Auth0 Dashboardを使用して、カスタムメールプロバイダーを構成できます。

Auth0 Dashboardでカスタムメールプロバイダーを構成する

  1. [Auth0 Dashboard]>[Branding(ブランディング)]>[Email Provider(メールプロバイダー)]に移動します。

  2. [Use my own email provider(独自のメールプロバイダーを使用する)]を有効にします。

  3. [Email Provider(メールプロバイダー)]セクションで、[Custom Provider(カスタムプロバイダー)]を選択します。

  4. [From(差出人)]フィールドに、メールの送信元となるデフォルトのメールアドレスを入力します。

  5. コードエディターで、カスタムメールプロバイダーにメッセージを送信するための適切なアクションコードを追加します。プロバイダーのAPIにメッセージを送信する方法については、プロバイダーのドキュメントを参照してください。他のアクションと同様に、Management APIを使用して、アクションとそのバージョンを管理します。

  6. 左側のメニューでキーをクリックして、APIでの認証に必要なシークレットを追加します。

  7. 左側のメニューでボックスをクリックして依存関係を追加します。

8. [Edit in Expanded Editor(拡張エディターで編集)]をクリックします。拡張エディターでは、シークレットや依存関係を追加したり、アクションをテストしたりできます。過去にデプロイされたアクションのバージョン履歴にアクセスすることもできます。custom-email-providerアクションの書き方については、「custom-email-providerアクションの例」を参照してください。

9. アクションをデプロイするには、拡張エディターの右上にある[Deploy(デプロイ)]をクリックします。

10. 拡張エディターの左上にある[Back to Email Provider(メールプロバイダーに戻る)]をクリックします。[Provider Configuration(プロバイダーの構成)]セクションに緑のチェックマークと[Enabled(有効)]が表示されるはずです。

11. [Save(保存)]をクリックして、カスタムメールプロバイダーの構成を確定します。[Save(保存)]をクリックすると、アクションが自動的に保存されてデプロイされます。

12. 運用環境で使い始める前に、[Send Test Email(テストメールの送信)]をクリックして、カスタムメールプロバイダーをテストします。カスタムメールプロバイダーの構成を保存するまで、テストメールは送信できません。

アクションを削除する

アクションを削除するには、まず[Auth0 Dashboard]>[Branding(ブランディング)]>[Email Provider(メールプロバイダー)][Custom Email Provider(カスタムメールプロバイダー)]を無効にしてからアクションを削除することで、メール配信の失敗を防ぐことができます。

custom-email-providerアクションの例

以下のサンプルコードでは、メール通知の送信にトリガーされたonExecuteCustomEmailProvider関数が2つの引数を取ります。

  1. event:ユーザーと通知のコンテキストに関する情報を含みます。詳細については、「アクショントリガー:custom-email-providerイベントオブジェクト」を参照してください。

  2. api:通知送信中のカスタム動作にヘルパーメソッドを提供します。詳細については、「アクショントリガー:custom-email-provider API オブジェクト」を参照してください。

// Import necessary modules
const { request } = require('undici');

/**
 * Handler to be executed while sending an email notification.
 * @param {Event} event - Details about the user and the context in which they are logging in.
 * @param {CustomEmailProviderAPI} api - Methods and utilities to help change the behavior of sending an email notification.
 */
exports.onExecuteCustomEmailProvider = async (event, api) => {
  // Define the email payload
  const emailPayload = {
    from: {
      name: "Test Sender",
      email: "sender@example.com"
    },
    to: [{ email: event.user.email }],
    subject: event.notification.message_type,
    html: event.notification.html,
    text: event.notification.text,
  };

  try {
    // Make the API call to send the email
    const { statusCode, body } = await request('https://api.example.com/send-email', {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${event.secrets.api_key}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(emailPayload),
    });

    if (statusCode === 200) {
      console.log('Email sent successfully');
      // Handle the body or discard it if not needed
      // await res.body.json() || await res.body.dump()
    } else if (statusCode >= 500) {
      // Retry on server errors
      api.notification.retry(
        `Internal Server Error received from Messaging Proxy. Status code: ${statusCode}.`
      );
      return;
    }
  } catch (error) {
    console.error(`Error sending email: ${error.message}`);
    api.notification.drop(
      `An unexpected error occurred. Error: ${error.message}`
    );
  }

  return;
};

Was this helpful?

/

アクションの書き方やデプロイメントについては。「アクションを初めて作成する」をお読みください。