Single Sendsで作成したニュースレターと、/v3/mail/sendで送信したパスワードリセットメールは、同じSendGridアカウントから送信しても、かなり異なるメールとして届くことがあり、スパムテストの結果に影響します。Marketing Campaignsは常に配信停止ヘッダーを追加しようとしますが、APIでは指定した場合にのみ追加されます。送信する前に、どちらをテストするのか決めてください。
受信側の仕組みはどちらも同じです。Email Spam Testerは一時的なメールアドレスを発行し、アカウントは不要です。1時間以内に最初に届いたメールだけがテスト対象となり、認証、SpamAssassinとRspamdの判定、コンテンツ、GmailとYahooが定める一括送信者向け要件、送信元IPを照会する21件のブロックリストを含むレポートが生成されます。
Single Sends: テストボタンと件名のプレフィックス
組み込みのテスト機能は、Marketing > Single Sends にあります。Single Sendを開き、Test Your Email を見つけてテスト用アドレスを入力し、Send Test Message をクリックします。SendGridでテストするには、送信者と件名の入力が必要です。また、件名でHandlebarsを使用している場合は、Test Dataへの入力も必要です。テストメールを送信すると、SendGridは件名の先頭に Test - を付けます。
実際の配信と同じ条件でテストするには、Single Sendをリストに送信します。Single Sendsの送信先はリストまたはセグメントなので、テスト用アドレスだけを連絡先として登録したリストを作成し、Recipients で選択します。これで、ヘッダー、配信停止リンク、トラッキング対象リンクが、購読者に届くものと同じになります。受信先テストも実行した場合は、そのプロバイダーの受信トレイをこのリストに追加できます。
APIとSMTP: curlコマンド1つ
SendGridの入門用サンプルを短くし、テストアドレスを受信者に指定しています。
curl --request POST \
--url https://api.sendgrid.com/v3/mail/send \
--header 'Authorization: Bearer <<YOUR_API_KEY>>' \
--header 'Content-Type: application/json' \
--data '{"personalizations":[{"to":[{"email":"test-xxxxxxxxxxxxxxxxxxxx@t.email-spam-tester.com"}],"subject":"Hello, World!"}],"content":[{"type":"text/plain","value":"Heya!"}],"from":{"email":"you@yourdomain.com","name":"Your Name"}}'
受信先テストが有効な場合、各プロバイダーの受信トレイを同じto配列に追加し、マーカーをsubjectに入れます。これにより、1回のリクエストで、Gmail、Outlook、Yahooなどのプロバイダーでメールがどのフォルダーに振り分けられたかも確認できます。
独自のテストアドレスと、単一送信者認証またはドメイン認証によってSendGridで検証済みのFromを指定してください。さらに適切なのは、アプリが実際に送信するメールを実際のHTMLとともに送ることです。コンテンツチェックでは本文の内容が評価されます。
アプリケーションがSMTPを使用する場合、変わるのは転送方法だけです。ホストはsmtp.sendgrid.net、ユーザー名はキーではなく文字列apikeyそのもので、SSLはポート465を使用します。
テスト送信用エンドポイントPOST /v3/marketing/test/send_emailもあります。最大10件のアドレスを指定できますが、Dynamic Transactional Templatesでのみ動作します。そのため、ほとんどのAPIメールでは、上記の通常のMail Send呼び出しが実際の送信条件に即したテストです。
配信停止ヘッダーは選択した経路によって異なります
Marketing Campaignsでは、毎回List-Unsubscribeヘッダーの追加が試みられます。APIまたはSMTP経由のメールに追加されるのは、Settings > TrackingでSubscription Trackingが有効になっている場合だけです。この場合、SendGridはHTTPSリンクを含むList-UnsubscribeとList-Unsubscribe-Post: List-Unsubscribe=One-Clickを挿入します。
Subscription Trackingを使用しない場合は、リクエストにヘッダーを追加します。
"headers": {
"List-Unsubscribe-Post": "List-Unsubscribe=One-Click",
"List-Unsubscribe": "<mailto:unsubscribe@yourdomain.com>, <https://yourdomain.com/unsubscribe>"
}
SendGridではmailtoとhttpsの両方が必要で、そのリンクへの通常のGETリクエストで配信停止処理を行わないよう警告しています。これらのヘッダーに関するSendGridのサポート記事からコピーする場合は注意してください。2つ目のサンプルではList-Unsubscribe-PostにURLが設定されていますが、これは誤りです。値は常にList-Unsubscribe=One-Clickです。その他の情報はList-Unsubscribeの修正ページにあります。
メッセージがパスワードリセットや領収書で、リストヘッダーがない場合、レポートでは一括送信者ルールのグループを失敗ではなくスキップとして扱います。API経由で送信されたニュースレターは、この扱いの対象にはなりません。
認証結果の読み方
ドメイン認証を設定していないアカウントでは、受信者に表示されるFromアドレスの後に「via sendgrid.net」と表示されます。SendGridのドキュメントには、ドメイン認証によってこの表示が削除されると記載されています。レポートでは、この表示以外の情報も確認できます。DKIMとSPFのアライメント行を確認してください。署名またはReturn-Pathが自分のドメインではなくSendGridのドメインに属している場合、Fromに対するDMARC認証はpassになりません。対応手順にはドメイン認証が示されるはずです。gmail.comまたはyahoo.comのアドレスをFromに使用すると、状況はさらに悪化します。SendGridのDMARCページには、この場合はSPFとDKIMの両方がfailになると記載されており、コンソールにも、そのようなメールはDMARCチェックに失敗する可能性があるという警告が表示されます。
ドメイン認証はSettings > Sender Authenticationにあります。デフォルトである自動セキュリティを有効にすると、SendGridから次の4つのレコードが提供されます。
em[0000]のCNAME。SPFを処理し、Return-Pathになります。- DKIM用の
s1._domainkeyとs2._domainkeyのCNAME。 v=DMARC1; p=none;を値に持つ_dmarcのTXT。
値の例です。実際の値はアカウントからコピーしてください。
| 名前 | Type | 値 | 用途 | コピー |
|---|---|---|---|---|
| 自動セキュリティ有効(デフォルト) | ||||
| em[0000] | CNAME | アカウントに表示されたターゲット | SPFとReturn-Path。 | |
| s1. | CNAME | アカウントに表示されたターゲット | DKIM。 | |
| s2. | CNAME | アカウントに表示されたターゲット | DKIMの2番目のセレクター。 | |
| _dmarc | TXT | v= | DMARC。 | |
| 自動セキュリティ無効 | ||||
| em[0000] | MX | アカウントに表示されたホスト | Return-Path。 | |
| em[0000] | TXT | v= | 自分で管理するSPF。 | |
| m1. | TXT | アカウントに表示されたキー | DKIM。 | |
自動セキュリティを無効にすると、em[0000]にMXとSPF TXT(v=spf1 include:sendgrid.net ~all)が追加され、さらにm1._domainkeyにDKIM TXTが追加されます。この場合、SPFレコードは自分で管理します。DNSプロバイダーが_を含むCNAME名を拒否する場合、これが唯一の選択肢です。また、別のサービスがすでにセレクターsを使用している場合、SendGridではカスタムセレクターを選択できます。DKIMチェッカー(セレクターs1)とSPFチェッカーで結果を確認してください。SPFチェッカーでは、SPFレコードが複雑になっている場合にDNSルックアップ数も確認できます。
リンク、IP、その他のレポート項目
クリックトラッキングでは、すべてのリンクが書き換えられます。リンクテキスト自体がURLの場合、表示されるアドレスと実際のリンク先が一致しなくなり、レポートのリンク不一致チェックで検出されます。SendGridの到達性ページでも同じ問題が指摘されています。リンクテキストには単語を使用するか、リンクブランディングを設定して、トラッキング対象のリンクが自身のドメインを経由するようにします。このドメインはFromドメインと一致している必要があります。
TrialプランとEssentialsプランでは共有IPプールから送信されます。SendGridによると、レピュテーションが変化した場合、これらのIPは予告なく変更されることがあります。そのため、いずれかのIPがブロックリストに登録されると、そのプールを利用するすべてのユーザーに影響します。ブロックリストチェッカーを使用すると、後からそのIPを再確認できます。逆引きDNSを設定できるのは専用IPを使用する場合のみです。専用IPはPro Email APIとAdvanced Marketing Campaignsで利用できます。
SendGridのドキュメントにある関連記事
メールテストwww.twilio.com ↗ドメイン認証www.twilio.com ↗List-Unsubscribewww.twilio.com ↗リンクブランディングwww.twilio.com ↗よくある質問
メールに「via sendgrid.net」と表示されるのはなぜですか?
SendGridで送信ドメインがまだ認証されていないためです。Settings > Sender Authenticationでドメイン認証を設定すると、SendGridのドキュメントによれば、このタグは表示されなくなります。
SendGridを使用していますが、レポートではList-Unsubscribeがないと表示されます。なぜですか?
Subscription Trackingをオフにした状態で、APIまたはSMTP経由で送信している可能性があります。Settings > Trackingでオンにするか、headersオブジェクトに両方のヘッダーを追加してください。
SendGridの「Send Test Message」を使用できますか?
はい、テスト用アドレスに届きます。ただし、件名の先頭にTest - が付くことに注意してください。購読者が実際に受信するものと同じヘッダーを確認するには、1件の連絡先だけを含むリストへのSingle Sendの方が実態に近くなります。
Mail Sendの代わりにテスト送信用APIエンドポイントを使用できますか?
使用できるのはDynamic Transactional Templatesだけです。/v3/marketing/test/send_emailが受け付けるのはこれだけで、最大10件のアドレスを指定できます。それ以外はすべて/v3/mail/sendを使用します。
DKIMチェッカーにはどのセレクターを入力しますか?
自動セキュリティがオンの場合は、s1とs2を確認してください。オフの場合、セレクターはm1です。設定時にカスタムセレクターを選択した場合は、代わりにそれを使用してください。