ホームページ > バックエンド開発 > PHPチュートリアル > sendgridで入ってくるメールを処理します

sendgridで入ってくるメールを処理します

Christopher Nolan
リリース: 2025-02-23 09:39:15
オリジナル
919 人が閲覧しました

SendGrid:電子メールをアプリに変換するための強力なツール

SendGridは、バッチでメールを送信するサービスであるだけでなく、あまり知られていない強力な機能を提供します。 Simple Configurationを使用すると、指定されたドメイン名の下のすべての電子メールをSendGrid処理して、サーバーに電子メールメッセージを送信できます。この記事では、sendgridを使用して「記事へのメール」関数を構築する方法を紹介します。

コアポイント:

  • SendGridのインバウンドメール解像度関数は、指定されたドメイン名からすべてのメッセージを処理し、POSTリクエストの形式で指定されたURIにメール情報を送信できます。
  • Webhookをセットアップすることにより、受信したメールをカスタマイズできます。
  • SendGridのインバウンド電子メール解像度関数は、電子メールの到着リマインダー、クラウドストレージへの添付ファイルのアップロード、電子メール返信フォーラム通知、登録解除リクエストなどなど、広く使用されています。
  • SendGridのインバウンド解像度Webhookは、ワイルドカードサブドメインの使用をサポートして複数の電子メールアドレスを処理し、HTTPSセキュアデータ送信をサポートします。添付ファイルの合計サイズは20MBに制限され、ダッシュボードアクティビティログを提供して簡単にデバッグします。

初心者:

この記事のサンプルコードは、スリムフレームワークフレームワークに基づいています。簡単にデバッグするには、次のコンテンツを

セクションに追加してください。 composer.json requireフレームワークのインスタンス化コードを

に変更し、ロガーを構成します。
"slim/extras": "dev-develop"
ログイン後にコピー
ログイン後にコピー

サンプル構成ファイルをinclude/services.phpにコピーし、構成値(データベース接続情報など)を設定します。次のコードを追加して、ログファイルのあるディレクトリを指定し、画像をアップロードします。

$app = new Slim(array(
    'view' => new Twig(),
    'templates.path' => $c['config']['path.templates'],
    'log.writer' => new \Slim\Extras\Log\DateTimeFileWriter(array(
        'path' => dirname($c['config']['path.logs']),
        'name_format' => 'Y-m-d',
        'message_format' => '%label% - %date% - %message%'
    ))
));
ログイン後にコピー
ログイン後にコピー
これらのディレクトリを作成し、Webサーバーに書き込みアクセス許可があることを確認します。

config/config.php当社のアプリは、登録されたユーザーに電子メールエイリアスを提供します。受信者の電子メールアドレスの

シンボルの前にパーツを一致させることにより、それを投稿したユーザーを決定できます。実際のアプリケーションでは、より複雑なエイリアスルールを設定し、電子メールの送信アドレスを制限する必要がある場合があります。データベース構造は、ユーザーと記事を保存するための2つのテーブルを定義します。
'path.logs'    => $basedir . 'logs/',
'path.uploads' => $basedir . 'public/uploads/'
ログイン後にコピー
ログイン後にコピー

sendgridアカウントが必要です(無料アカウントで十分です)。登録後、[開発者]ページに移動し、[着信電子メールを分析する]をクリックします。ホスト名とコールバックURLを入力します。

@

CREATE TABLE users (
    id INTEGER NOT NULL AUTO_INCREMENT,
    name VARCHAR(128) NOT NULL ,
    alias VARCHAR(45) NOT NULL ,

    PRIMARY KEY (id) ,
   INDEX alias (alias ASC)
);

CREATE  TABLE posts (
    id INTEGER NOT NULL AUTO_INCREMENT,
    title VARCHAR(255) NOT NULL,
    body TEXT NOT NULL,
    image varchar(255),
    user_id INTEGER NOT NULL,

    PRIMARY KEY (id)
);
ログイン後にコピー
ログイン後にコピー
指定されたドメイン名でメッセージを受信すると、SendGridは、送信者、受信者、電子メールボディ、添付ファイル情報を含むPOSTリクエストをURLに送信します。最後に、ドメイン名にMXレコードを追加する必要があります。特定の操作は、ホスティングプロバイダーによって異なります。

コールバック関数をビルド:Handle Incoming Email with SendGrid

あなたのアプリケーションは、あなたが指定したURLのPOST要求に応答する必要があります。

"slim/extras": "dev-develop"
ログイン後にコピー
ログイン後にコピー

sendgridの「ping」テストが4xxまたは5xxエラーを返した場合、リクエストをキープして3日間再試行します。したがって、成功したPINGテストでは、200のステータスコードを返す必要があります。 SendGridの投稿リクエストには、メールに関するさまざまな情報が含まれています。詳細については、SendGrid APIドキュメントを参照してください。主に次のフィールドに焦点を当てています:

Handle Incoming Email with SendGrid

toフィールド形式は多様であるため、複数の受信者を解析するために正規表現が必要です。

$app = new Slim(array(
    'view' => new Twig(),
    'templates.path' => $c['config']['path.templates'],
    'log.writer' => new \Slim\Extras\Log\DateTimeFileWriter(array(
        'path' => dirname($c['config']['path.logs']),
        'name_format' => 'Y-m-d',
        'message_format' => '%label% - %date% - %message%'
    ))
));
ログイン後にコピー
ログイン後にコピー
受信者ごとに、エイリアスセクションを抽出し、一致するユーザーを見つけます:

'path.logs'    => $basedir . 'logs/',
'path.uploads' => $basedir . 'public/uploads/'
ログイン後にコピー
ログイン後にコピー
記事を作成します:

CREATE TABLE users (
    id INTEGER NOT NULL AUTO_INCREMENT,
    name VARCHAR(128) NOT NULL ,
    alias VARCHAR(45) NOT NULL ,

    PRIMARY KEY (id) ,
   INDEX alias (alias ASC)
);

CREATE  TABLE posts (
    id INTEGER NOT NULL AUTO_INCREMENT,
    title VARCHAR(255) NOT NULL,
    body TEXT NOT NULL,
    image varchar(255),
    user_id INTEGER NOT NULL,

    PRIMARY KEY (id)
);
ログイン後にコピー
ログイン後にコピー
これで、基本的な「記事への電子メール」機能があります!次に、添付ファイル処理機能を追加して、ユーザーが電子メールの添付ファイルを介して画像を追加できるようにします。 SendGridのPOSTリクエストには、

パラメーターが含まれており、添付ファイルの数を示します。添付ファイルはリクエストと一緒に投稿され、処理方法はWebフォームファイルのアップロードと同じです。 attachments

$app->post('/endpoints/email', function () use ($app, $c) {
ログイン後にコピー

概要: この記事では、SendGridのインバウンド電子メール解像度関数の簡単なアプリケーションである「記事へのメール」機能を紹介します。これにより、ユーザーは電子メールを送信して記事を作成できます。簡単なコールバック関数を使用すると、メールの到着リマインダー、クラウドストレージへの添付ファイルのアップロード、電子メール返信フォーラム通知、登録解除リクエストなど、さまざまな興味深い関数を実装できます。

(後続のコンテンツ、すなわちFAQパーツは、記事の長さのために個別に処理することをお勧めします。FAQパーツは、新しい質問として個別に提出できます。)

以上がsendgridで入ってくるメールを処理しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート