0

我正在从 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
  }
})

感谢帮助!

4

1 回答 1

1

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

内部集合是每个收件人的替换substitution_datarecipients

例如,我有以下模板。

模板

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

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

电子邮件看起来像

您好,用户一,您的用户名 userone 已创建。谢谢了不起的公司

于 2016-04-23T01:39:05.510 回答