SendGridとの連携

アプリケーションからのメール送信

2024年4月以降、Domain AuthenticationもしくはSingle Sender Verificationの設定が必須になり、送信元に指定するドメインまたはメールアドレスで設定を完了させていない場合はメールを送信できません。

詳しくはこちらをご覧ください。

SendGridはSMTPとWeb APIの二種類のメール送信機能を提供します。

SendGridは多数の言語向けにクライアントライブラリを提供しています。SendGridはこれらの利用を推奨しています。

クライアントライブラリを使わない場合は、Web APIの利用をお勧めします。これは、ほとんどのケースで高速に動作し、エンコーディングの面でいくつかの利点があり、簡単に利用できるためです。

Web API

以下のような場合、Web APIはSMTPより有利です。

  • ISPが全てのアウトバンドのメールポートをブロックしてHTTPのみ利用可能な場合
  • Web APIはクライアント~サーバ間で多数のメッセージを必要としないため、アプリケーションサイトとSendGridの間で高いレイテンシーが確保できる場合、より高速になります。
  • アプリケーションの動作環境を変更できず、SMTPライブラリのインストールおよび設定ができない場合
  • メールを送信するライブラリを開発している場合。Web APIを利用した方が開発期間を短縮することができます。

SMTP

既存のアプリケーションでSMTPを利用している場合、SMTPの接続設定をSendGridに変更するだけで利用できるため、SMTPの方が簡単な可能性があります。

  • SMTPユーザ名とパスワードをapikey(固定文字列)、SendGridアカウントで作成したAPIキーに変更します。
  • サーバ名をsmtp.sendgrid.netに変更します。
  • 利用可能なポートは25、587、2525(plain/TLS)および465(SSL)です。

各ISPの制限を回避するため、通常はポート587を利用します。

SMTPでは1回の接続につき5,000メッセージまで送信可能です。

SendGridはX-SMTPAPIヘッダによりSMTPの機能を拡張します。詳細はSMTP APIを参照してください。

SMTPAPIが利用できる場合は利用してください。SMTPにより1回の接続につき5,000メッセージまで送信することができ、メッセージ毎に1000人の受信者まで送信することができます。

IPアドレスを直接指定してメール送信することは推奨しません。必ずsmtp.sendgrid.netを指定してください。

smtp.sendgrid.netのIPアドレスは予告なく変更されます。IPアドレスを直接指定していた場合、IPアドレスが変更されるとアクセスできなくなります。

アプリケーションでのメール受信

SendGridはメッセージの保存や、メールボックスの機能は提供しませんが、Inbound Parse Webhookの機能により受信したメールのBodyと添付ファイルを指定したURLにPOSTすることができます。

この機能はメールによるブログ記事の投稿やメールによる自動返信処理などで利用されます。

パワーユーザおよび大量送信者

SendGridを通じてメールを送信するための最も強力な方法は、Postfixなどのローカルメールサーバを次のように設定することです。

  • アプリケーションが送信するメールをキューイングする。
  • スマートホストとしてSendGrid経由でメールを送信する。

この方法はアプリケーション側から見ると、フォールトトレラントサーバにメールを送信する利点を利用して待ち時間を減らすことができます。サーバとSendGridの間のネットワーク接続が失われた場合、アプリケーション側に高度な機能が無くてもローカルメールサーバがメールのキューイングや再送信を行ってくれます。

また、ローカルメールサーバを利用することでコネクションの再利用やパイプライン処理などSMTPプロトコルの複雑な機能を利用することができるため、大量メールを送信する場合に有利です。これらの技術を利用することでメッセージごとに接続して個々のスクリプトで処理を行う場合よりも短時間に大量の送信を行うことができます。