SendGridを使って短時間に大量のメールを送るための方法
- 2021年2月18日
- by SendGrid
- Category: 技術ネタ
はじめに
SMTPリレーサービスを利用しようと思ったら、送信通数制限が厳しくて期待した量のメールを送れなかった、なんて経験はないでしょうか?SendGridは大量送信を得意としたサービスで、送信通数は無制限に近いレベルの性能を備えています。今回は、大量にメールを送るための方法にフォーカスしてご紹介します。
- Web API
- SMTP
- マーケティングキャンペーン機能
Web API
RESTfulなAPIで、ボディ部にJSON形式でパラメータを指定することでメール送信が行なえます。1リクエストあたり最大1,000宛先まで指定できます。複雑なSMTPの仕様を気にする必要がなく、SendGridのさまざまなメール送信機能をフル活用できるため、アプリケーションからメール送信する場合はWeb APIの利用を推奨します。
以下は、1リクエストで複数の宛先に同じ内容のメールを個別送信するリクエストの例です。宛先を増やす場合、personalizationsパラメータに指定する配列要素を増やしていきます。
{ "personalizations": [ { "to": [{ "email": "ben@example.com" }] }, { "to": [{ "email": "joe@example.com" }] } ], "subject": "テストメール", "from": { "email": "sender@example.com" }, "content": [ { "type": "text/plain", "value": "メール本文です。" } ] }
SMTP
一般的なSMTPと同じプロトコルでメール送信が可能です。Toヘッダに宛先アドレスを指定してメールを送ることもできますが、1回のリクエストで多数の宛先に送信する場合、x-smtpapiヘッダを利用します。
x-smtpapiヘッダでは、最大10,000宛先まで指定可能ですが、多数の宛先を指定すると解析処理に時間がかかるため、1,000程度が推奨されています。
以下は、上述のWeb APIと同じ内容のメールをSMTPで送信する例です。宛先を増やす場合、x-smtpapiヘッダ内のtoパラメータに指定する配列要素を増やしていきます。
To: dummy@example.com From: sender@example.com Subject: =?UTF-8?B?44OG44K544OI44Oh44O844Or?= x-smtpapi: { "to": [ "ben@example.com", "joe@example.com" ] } Content-Type: text/plain; charset: utf-8; Content-Transfer-Encoding: base64 44Oh44O844Or5pys5paH .
マーケティングキャンペーン機能
SendGridのダッシュボード上で、宛先リストのアップロードとメール本文の編集を行いメールを送信する機能です。指定可能な宛先数に制限はなく、プログラムの知識がなくても利用できます。
より大量にメールを送信するには
短時間でより大量のメールを送信するには次のような方法があります。
- リクエストを繰り返し送信する、並列化する(SMTP、Web APIで利用可)
・制限の範囲内でご利用ください - コネクションを張ったまま連続してリクエストを送信する(SMTPでのみ利用可)
- send_atパラメータを利用して送信予約を行う
・指定した時間になったらSendGridが自動的に送信します。なるべく受信者に到達する時間のばらつきを小さくしたい場合におすすめです
SendGridはどんなに大量のリクエストでも受け付けますが、「受け付け=宛先への到達」ではない点にご注意ください。「スロットリング」と呼ばれる、宛先からの受信制限を受ける場合があるためです。スロットリングの影響を受けにくくするには、IPウォームアップと呼ばれる手法で送信元IPアドレスの信頼度を上げることが有効です。
さいごに
メールの大量送信を行う場合は、ぜひSendGridの利用をご検討ください。ブラックフライデーやサイバーマンデーにそれぞれ約57億通ものメールを送信する強力なインフラは、毎年増加する通数に対応し続けています。今回ご紹介した方法が、メール送信プログラムの改善に繋がれば幸いです。