0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

まずは、Postmanで接続できるかを確かめてみます

ということで、検索してみると...

I am trying to connect to the SendGrid API via Postman.

APIキーを使って接続すればよさそうです。Salesforceからの接続と同じですね。

However, when I try to retrieve the log of a specific email sent from the messages endpoint, I get a 400 Bad Request. I can see that the message IDs within SendGrid are in two parts, but using either part/the combined ID does not return a different result.

取得できないメッセージがあるって... 何で?

SendGrid's documentation states you must purchase additional email activity history to access the Email Activity Feed API. I believe this includes any requests to the /v3/messages endpoint, and that it is not possible to retrieve data about individual messages without the extra purchase.

どうも、ライセンスが必要みたい。

WEB APIのマニュアルを探すと、あった。

image.png

ということで、Email Logs APIを使ってみることにします。

Psotmanから使ってみます

共有コレクションにマウスを合わせ、右側の 「...」アイコン(アクションメニュー) をクリックします。
あれっ、無い。

image.png

もしかして、全部を一気にはフォークできないのか?

それぞれで、フォークするみたいですね

image.png

自分のワークスペースでAPiキーとMessage IDをセットすると、あっさり内容を取得できました

image.png

image.png

イベントも取得できています。

image.png

image.png

しかし、このMessage IDが分からないとステータスは確認できないですね。
カスタムオブジェクトを作った方がいいのかもしれないけど、そもそもメール送信した後に、レスポンスで返ってきてるかな?

image.png

ステータスコードは返ってきましたが、Bodyには何も値がないです。

image.png

2026/07/13追記

送信した時のレスポンスのヘッダにX-Message-Idが返ってきていて、sg_message_idの前半部分が分かるようです。

メールを送信し、応答ヘッダーの X-Message-ID 値を確認します。これは、Sendgrid がメッセージを各受信者に個別に送信する前に割り当てた値です (これにより「MessageId」または sg_message_id が生成されます)。その後、EmailActivity History API に対してクエリを使用して、クエリ= で GET /messages を照会できmsg_id like "{X-Message-Id}%"ますmsg_id like "abc-123-def%"。

試しに、以下を追加してみて確かめます

system.debug(Logginglevel.INFO,'X-Message-Id: '+ res.getHeader('X-Message-Id'));

確かに取得できています。これでメールを送った後で開封されたかもSalesforce上から管理できそうですね。

image.png

image.png

Email Logs のイベント

image.png

Salesforceメール送信ステータスよりわかりやすい感じがします。

  • Received
    SendGridがメール送信リクエストを受け付けたときに発生します。Webサイト、アプリケーション、メールクライアント経由のSMTPリレー、APIなど、全てのリクエストで発生します。

  • Processed
    SendGridがメール送信リクエストを受け付けた(Received)後、送信処理を開始したときに発生します。

  • Delivered
    SendGridからメールが送信され、受信側メールサーバがそのメールを受け付けたときに発生します。

※受信トレイへのメールの到達を保証するものではないことにご注意ください。

  • Open
    受信者がメールを開封したときに発生します。

※Openイベントをトラッキングするには、事前にOpen Trackingを有効にしておく必要があります。

  • Click
    受信者がメール本文中のリンクをクリックしたときに発生します。

※Clickイベントをトラッキングするには、事前にClick Trackingを有効にしておく必要があります。
※Subscription Tracking(配信停止リンク)のクリックではClickイベントは発生しません。

  • Deferred

受信側メールサーバから一時的なエラー(400番台のエラーコード)が返された場合に発生します。よくある原因としては、

  • 受信者のメールボックスが一杯になっている
  • 受信側メールサーバが一時的に受信制限をかけている
  • 接続がタイムアウトした
  • MXレコードが解決できない
    などが挙げられます。

Deferredが発生した場合、SendGridは時間を置いて再送を繰り返します(最長72時間)。メールサーバの問題が解決していれば、メールは通常通り受け付けられDeliveredイベントが発生します。再送を繰り返してもメールが受け付けられなかった場合はBlockedイベントが発生します。

  • Dropped
    サプレッションリストに登録されている宛先にメール送信を試みた場合、SendGridはそのメールを自動的にDrop(破棄)します。このときメールは送信されません。これにより、SendGridは送信者のレピュテーションを保護します。

参考:メールがドロップしてしまったのですが、なぜでしょうか?どう対処すればいいですか?

  • Bounced
    受信側メールサーバから受信を拒否されたときに発生します。

このとき、受信側メールサーバからは恒久的なエラー(500番台のエラーコード)が返されています。よくある発生原因としては、宛先のメールアドレスが存在しない、ドメイン指定による受信拒否などが挙げられます。Bouncedイベントが発生すると、その宛先は自動的にバウンスリストに登録され、次からその宛先へのメールはSendGridにより自動的にDrop(破棄)されます。

参考:バウンスとブロックが発生する7つの原因

  • Blocked+
    送信元IPアドレスがブラックリストに掲載されている場合や、ISP等によってブロックされている場合に発生します。これはBouncedイベントほど深刻ではなく、永続的な問題ではないため、次からのメールが自動的に破棄されることはありません。

  • Unsubscribe
    受信者から配信停止のリクエストを受けたときに発生します。

※日本の法律では配信停止方法の明示が定められています。
※SendGridは、送信するメールに配信停止リンクを自動で追加する機能を提供しています。受信者が配信停止リンクをクリックすると、当該宛先が「配信停止リスト」に登録され、次からその宛先へのメール送信はSendGridにより自動的にDrop(破棄)されます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?