
SendGridで送信元(From)アドレスを設定する方法と未設定時のエラーについてまとめてみた
こんにちは、昴です。
今回はSendGridでメールを送信する際に必須となる、送信元(From)アドレスの設定方法と、設定しなかったらどうなるかについてご紹介します。
はじめに
SendGridは、高い到達率と拡張性を備えた、開発者向けのクラウド型メール配信サービスです。SendGridでは、メールを送信する際にFromアドレス(誰からのメールか)を明示することが必須となっています。
今回は、実際のコードへの埋め込み方や、Fromアドレスを指定しなかった場合に起こるエラーについて、Web API (curl) を使って実際に検証してみます。
前提・検証環境
本記事の手順を進めるにあたり、以下の環境および権限が必要です。
- SendGridアカウントが開設済みであること
- メールの送信権限を持つAPIキーが発行済みであること
実践
Fromアドレスとは何か
- @ の前後とも、システム側で自由に設定が可能です(例: noreply@example.com )。
- 受け取り手にはSendGridのアドレスは一切表示されません。
- メールアドレスだけでなく、表示名も合わせて設定可能です(例: サービス運営事務局 support@example.com )。
Web API v3 (curl) を使った送信テスト
それでは、実際にメールを送信する際、どのようにFromアドレスを指定するのか試してみます。
JSONのペイロード内で、from オブジェクトとして email と name を指定します。
curl --request POST \
--url https://api.sendgrid.com/v3/mail/send \
--header "Authorization: Bearer $SENDGRID_API_KEY" \
--header "Content-Type: application/json" \
--data '{"personalizations": [{"to": [{"email": "recipient@example.com"}]}],"from": {"email": "noreply@example.com", "name": "表示名(任意)"},"subject": "テストメール","content": [{"type": "text/plain", "value": "これはテストです。"}]}'
上記を実行し、無事にメールが届くと以下のように表示されます。
設定したFromアドレスと表示名がしっかり反映されていることがわかります。

今回はcurlで検証しましたが、他の環境でも基本的には同じようにFromを指定します。
Pythonの場合
Pythonなどの公式ライブラリを使う場合は、Email オブジェクトや引数として直接指定します。
import os
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail, Email, To, Content
sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
from_email = Email("from@example.com", "送信者名") # ここでFromと表示名を設定
to_email = To("to@example.com")
subject = "テストメール"
content = Content("text/plain", "これはテストです。")
mail = Mail(from_email, to_email, subject, content)
response = sg.client.mail.send.post(request_body=mail.get())
print(response.status_code)
SMTPの場合
システムにSendGridをSMTPサーバーとして組み込む場合は、一般的なメールソフトやライブラリと同じように、メールヘッダの From に設定します。
From: 送信者名 <from@example.com>
To: to@example.com
Subject: テストメール
これはテストです。
確認
Fromを指定しなかったらどうなるか
SendGridにおいて、from.email は必須パラメータです( from.name は任意となります)。そのため、指定せずに送信リクエストを送ると、メールは送信されずAPIがバリデーションエラーを返します 。 エラーメッセージとしては以下のような内容が返ってきます。
The from object must be provided for every email send.

補足:ドメイン認証を設定しないとどうなるか
Fromアドレスを自由に設定できるとはいえ、設定したドメインの「ドメイン認証(Domain Authentication)」を行っていない場合、Gmailなど一部のメールクライアントで「sendgrid.net 経由」と表示される場合があります。(なりすましを疑われ、スパム判定されるリスクが高まります。)

SendGridコンソールの「Sender Authentication」でDNSレコード(CNAME×3、TXTレコード)を追加する作業を行い、ドメイン認証を正しく設定すると、この 経由 の表示が消え、自社ドメインのみが表示される正常な状態になります。なお、DNS変更には情報システム部門との連携が必要になるケースがあり 、設定後、反映まで最大48時間かかる場合もあるため 、計画的に進めることをお勧めします。
まとめ
今回はSendGridで必須となるFromアドレスの設定方法と、未設定時のエラー挙動についてご紹介しました。システムへの組み込み自体は非常にシンプルですが、確実にメールを届けるためにはドメイン認証とセットで設定することが重要です。
本ブログが少しでも参考になれば幸いです。
告知
Twilio/SendGridセミナーを毎月開催しています
クラスメソッドでは毎月Twilio/SendGridのセミナーを実施しています。
クラスメソッドではTwilio/SendGridのセミナーを毎月開催しております。いずれもTwilio及びSendGridを良く知らない方向けに基本的な部分から解説する内容となっておりますので、今後Twilio/SendGridの導入を検討している方や、既に導入済で改めて基本的な部分を勉強したいと考える方は、是非お気軽にご参加いただければと思います。







