从 Mandrill 迁移到 SparkPost -- Rails API

Migrating from Mandrill to SparkPost -- Rails API

我正在从 Mandrill 迁移到 SparkPost 并且有一个 Rails 后端。

我目前的数据结构如下--

message = {
  subject: "Welcome",
  merge_vars: [{
    rcpt: user.email,
    vars: email_vars(user)
  }],
  to:[{
    email: user.email,
    name: user.name
  }],
  track_clicks: true,
  track_opens: true,
  inline_css: true,
}

这会发送响应 --

m = Mandrill::API.new
template_content = []
result = m.messages.send_template 'email-confirmation', template_content, message

我是否需要更新 JSON 数据结构? 一旦 JSON 正常,如何使用 SparkPost 将值传递给特定模板?

我尝试了以下操作 --

m = SparkPost::Client.new()
template_content = []
result = m.messages.send_template 'email-confirmation', template_content, message

不过我也看到了这个--

host = 'https://api.sparkpost.com'

SparkPost::Request.request("#{host}/api/v1/transmissions", API_KEY, {
  recipients: [
    {
      address: { email: user.email },
      substitution_data: {
        first_name: user.name,
        email: user.email
      }
    }
  ],
  content: {
    template_id: 'email-confirmation'
  },
  substitution_data: {
    name: user.name,
    email: user.email
  }
})

感谢帮助!

如果您使用的是官方 gem,它有一个名为 send_payload 的便捷方法,您可以使用它来发送准备好的负载。

recipients 集合中的 substitution_data 是按收件人替换的。

例如,我有以下模板。

要使用此模板发送,这是我的完整代码

sp = SparkPost::Client.new() # pass api key or get api key from ENV

payload  = {
  recipients: [
    {
      address: { email: 'RECIPIENT1' },
      substitution_data: {
        name: 'User one',
        username: 'userone'
      }
    }, {
      address: { email: 'RECIPIENT2' },
      substitution_data: {
        name: 'User two',
        username: 'user2'
      }
    }
  ],
  content: {
    template_id: 'test-template'
  },
  substitution_data: {
    company: 'Awesome company'
  }
}

response = sp.transmission.send_payload(payload)
p response

电子邮件看起来像

Hello User one, Your username, userone, is created. Thanks Awesome company