4

我们正在努力将我们的电子邮件应用程序与 SparkPost 集成。我们唯一遇到的问题是收到来自 SparkPost 的退回电子邮件,以将它们从未来的邮件中排除。我们的应用程序直接从邮件服务器检索退回邮件。当用户在我们的软件中使用 SparkPost SMTP 设置时,他无法检索和处理退回电子邮件,因为 SparkPost 不会将退回邮件转发到用户的退回电子邮件地址。

Webhook 对我们不起作用,因为它们只能实时提取数据。如果我们的软件在退回邮件到来时关闭,则退回邮件将不会被捕获并且对于我们的软件将丢失,因为以后无法检索它。

所以,请告诉我是否有办法通过 API 或电子邮件从 SparkPost 获取退回电子邮件,就像 Amazon SES 一样。Amazon SES 只是将退回的电子邮件转发到用户在我们的应用程序中指定的电子邮件地址(邮件标头中的返回电子邮件标头字段)。

4

2 回答 2

7

如果您不能接受通过 HTTP (如事件 webhook 甚至我们的中继 webhook)推送的数据,那么下一个最好的方法是我们的​​消息事件 API(https://www.sparkpost.com/api#/reference/message-events/message-events /搜索消息事件

您可以请求仅在最后一小时获得退回,如下所示:

https://api.sparkpost.com/api/v1/message-events?events=bounce,out_of_band

如果您想要更具体的时间范围,只需添加从/到以及时区(如果需要):

https://api.sparkpost.com/api/v1/message-events?from=2015-09-10T00:00&to=2015-09-10T23:59&timezone=America/New_York

于 2015-09-11T00:26:22.373 回答
2

我编写了以下 ruby​​ 代码以将它们作为 CSV:

require 'net/http'
require 'json'
require 'csv'

uri = URI('https://api.sparkpost.com/api/v1/message-events?events=bounce,out_of_band')
req = Net::HTTP::Get.new(uri)
req['Content-Type'] = 'application/json'
req['Authorization'] = ENV['API_KEY'] || raise('please provide API_KEY env variable')

res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |https|
  https.request(req)
end

bounces = JSON.parse(res.body)['results']
puts "#{bounces.count} bounces found"

CSV.open("bounces.csv", "wb") do |csv|
  csv << %w(Timestamp Recipient Reason)
  bounces.each do |bounce|
    csv << [bounce['timestamp'], bounce['rcpt_to'], bounce['reason']]
  end
end

可在此处作为要点:https ://gist.github.com/schmijos/05d2f989c7a5854fe2cd31c666f61c39

于 2016-06-08T16:09:02.680 回答