如何在不使用webhooks的情况下从SparkPost获取退回电子邮件?

时间:2015-09-07 13:44:58

标签: bouncedemail sparkpost

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

Webhooks不适用于我们,因为它们只能实时提取数据。如果我们的软件在退回电子邮件发送时关闭,则弹跳将不会被捕获并且将因我们的软件而丢失,因为以后无法检索它。

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

1 个答案:

答案 0 :(得分:1)

我编写了以下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