6

我正在使用 sendgrid 发送邮件。大约有 20 个邮件模板。

我在 sendgrid 应用程序“订阅跟踪”的设置中设置了取消订阅模板。

我的要求是不同邮件模板的取消订阅链接的不同文本。

目前,unsubscribe linksendgrid 应用程序“订阅跟踪”中设置的只有一个静态。

任何人都可以帮助我如何在我的user_mailer班级中动态设置取消订阅链接。

我按照此链接使用 sendgrid XSMTPAPI 标头在邮件中提供取消订阅链接。但我不知道如何在 ruby​​ 中实现它。

下面是我尝试过的代码user_mailer class

    def abuse_notification(post,current_user,eventid)
     headers['X-SMTPAPI'] = '{"filters":{"subscriptiontrack":{"settings":{"enable":1,"text/html":"Unsubscribe <%Here%>","text/plain":"Unsubscribe Here: <% %>"}}}}'.to_json()
  UserNotifier.smtp_settings.merge!({:user_name => "info@xxxx.example.com"})

    @recipients  = "test@xxx.example.com"
    @from        = "xxxx"
    @subject     = "Report Abuse Notification"
    @sent_on     = Time.now
    @body[:user] = current_user
    @body[:event] = post

  end
4

1 回答 1

6

您在正确的轨道上,但是要使用 SendGrid SMTP API,您需要将标头添加到每封电子邮件,而不是添加到您的设置中。在您的 SMTP 设置中,您将进一步存储您的(至少)user_name、、、、SendGrid 文档password、详细配置。您可以按如下方式配置它:addressActionMailer

ActionMailer::Base.smtp_settings = {
  :user_name => 'sendgridusername',
  :password => 'sendgridpassword',
  :domain => 'yourdomain.com',
  :address => 'smtp.sendgrid.net',
  :port => 587,
  :authentication => :plain,
  :enable_starttls_auto => true
}

配置 ActionMailer 后,您需要将UserNotifier类设置为类似于以下内容。每个单独的方法都将设置X-SMTPAPI标题:

class UserNotifier < ActionMailer::Base
  default :from => "bob@example.com"

  def send_message(name, email, message)
    @name = name
    @email = email
    @message = message

    headers['X-SMTPAPI'] = '{"filters":{"subscriptiontrack":{"settings":{"enable":1,"text/html":"Unsubscribe <%Here%>","text/plain":"Unsubscribe Here: <% %>"}}}}'

    mail(
      :to => 'george@example.com',
      :from => email,
      :subject => 'Example Message'
    )
  end

end

请注意,X-SMTPAPI标头是 JSON,如果您希望将 Ruby 对象转换为 JSON,则需要使用JSONgem。

于 2013-08-06T23:11:20.013 回答