[英]How to get Sendgrid Inbound Parse Webhook working in rails app on production?
[英]Sendgrid Inbound Webhook - Undelivered notification
根據 sendgrid 文檔,入站解析器 webhook 響應失敗的方式是它將重試將 email 發布到配置的端點 3 天,如果未交付,將丟棄 email。
Parse API 會將解析后的 email 發布到您指定的 URL。 如果 POST 不成功,SendGrid 會自動排隊並重試任何以 5XX 狀態響應的 POST。 這可以防止錯誤配置其網站或 POST URL 的客戶丟失數據。
以 2xx 狀態響應 POST 請求以停止 email 重試。
為避免返回錯誤,您的鏈接必須在收到 email 時返回 2xx HTTP 代碼。 此響應讓我們的系統知道您的鏈接已收到 email。然后它會從我們的發送隊列中刪除。 如果我們沒有收到有效的 2xx HTTP 響應,我們的服務器將認為他們未能傳遞您的消息。 3 天后無法送達的消息將被丟棄。
我想知道在刪除未送達的電子郵件之前,sendgrid 是否會通知發件人他們的 email 無法送達?
根據我運行的一些測試,SendGrid 似乎永遠不會向發件人發送通知,也沒有任何簡單的方法來確定 SendGrid 是否丟棄了任何入站電子郵件。
雖然文檔措辭有點含糊,但我基於測試的理解(與文檔措辭一致)是這樣的:
我的結論是基於我在一周內進行的一些測試,從中我確定了以下幾點:
Case 1. 解析服務器返回 400 或 403 錯誤
email 在一次嘗試后被丟棄。
不再嘗試 POST email。
不會向發件人或 SendGrid 帳戶發送任何通知。
(測試方法:將SendGrid配置為URL,返回上述錯誤碼之一。檢查了1周多的服務器日志,發現只嘗試了一次。)
案例2.parse hook URL沒有DNS記錄
email 被丟棄,大概是在一次嘗試之后。
不會向發件人或 SendGrid 帳戶發送任何通知。
(測試方法:將鈎子URL配置到沒有任何DNS記錄的子域。運行DNS搜索並嘗試打開鈎子URL以確認DNS記錄沒有指向任何地方。發送一個88388513701218小時后。子域的適當記錄以將其指向腳本。檢查服務器日志並確認沒有嘗試發布 email。隨后的 email 嘗試成功發布。)
案例 3. 解析服務器返回 500 錯誤
SendGrid 在以下時間間隔嘗試 POST 到掛鈎 URL:
+0 +5m +10m +15m +20m
+25m +35m +50m +1h20m +2h20m
...然后每 3 小時
最后一次嘗試發生在 +71h20m
20 分鍾的偏移量有點不尋常,但它正好在整點,所以可能是因為消息在整點排隊嘗試 POST。
72 小時后不再嘗試 POST email。
不會向發件人或 SendGrid 帳戶發送通知。
統計數據
該文檔提到了統計數據的可用性,但是,我發現這些數字不准確。
例如,在我的測試過程中,我收到了從 go 到 API 的許多電子郵件,其中一些是為了成功(並且確實 POST 到我的服務器)和一些是為了失敗(作為上述測試的一部分),但是,返回的數字沒有對齊。
外賣
在以下情況下應格外小心:
還應注意,如果丟失了 email,似乎沒有任何可靠的方法可以查明這一點。
在刪除 email 之前,SendGrid 不會發送通知。 但是,只有在從您的 Webhook URL 收到錯誤並在三天內重試發布消息后,消息才會被丟棄。
我們從 Sendgrid 支持團隊得到確認,在入站 Webhook 解析器功能中丟棄的電子郵件將不會有任何通知或保存在 Sendgrid 中。 因此,我們將無法獲得有關丟棄的電子郵件的任何信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.