如何获取使用rails app中的sendgrid发送的电子邮件的响应以保存在数据库中

时间:2013-03-18 11:49:31

标签: ruby-on-rails-3 sendgrid

我使用sendgrid和actionmailer通过rails app发送了电子邮件,我也收到了邮件。 但是我希望在我的rails应用程序中发送(打开,发送,弹出...)sendgrid的电子邮件的状态,以便我可以将特定电子邮件的响应保存在我的数据库中。

我跟着: https://github.com/stephenb/sendgrid 发送电子邮件,它对我有用。

2 个答案:

答案 0 :(得分:2)

要获取已发送电子邮件的状态,请按照here

所述使用sendgrid webhooks

设置完成后,sendgrid会通知您的网址以下事件:

  • 已处理:已收到消息并准备发送。
  • 已删除:收件人存在于您的一个或多个抑制列表中:跳出,垃圾邮件报告,取消订阅。
  • 已发送:消息已成功发送到接收服务器。
  • 延期:收件人的电子邮件服务器暂时拒绝邮件。
  • 退回:接收服务器无法或不会接受消息。
  • 打开:收件人已打开HTML邮件。
  • 点击:收件人点击了邮件中的链接。
  • 垃圾邮件报告:收件人将邮件标记为垃圾邮件。
  • 取消订阅:收件人点击了邮件的订阅管理链接。

答案 1 :(得分:1)

您应该为您的应用设置event webhook。完成后,您将以以下格式向您的应用发送POST:

{
  "email":"foo@bar.com",
  "timestamp":1322000095,
  "unique_arg":"my unique arg",
  "category": "some_category",
  "event":"delivered"
}

由于您使用的是Rails,因此您还应该查看GridHook。 SendGrid没有正式支持它,但是开源社区中有很多人正在开发它。有了它,你将能够做到这样的事情:

Gridhook.configure do |config|
  # The path we want to receive events
  config.event_receive_path = '/sendgrid/event'

  config.event_processor = proc do |event|
     # event is a Gridhook::Event object
     EmailEvent.create! event.attributes
  end
end