【问题标题】:Ruby on Rails and SendGrid; dynamic template data is not populatingRuby on Rails 和 SendGrid;未填充动态模板数据
【发布时间】:2021-10-08 18:23:09
【问题描述】:

我对 Ruby on Rails 和 SendGrid 还很陌生。

我不明白为什么下面的代码示例不起作用?它确实使用正确的模板发送电子邮件,但没有填写动态数据。感谢任何输入/见解。

require 'sendgrid-ruby'
include SendGrid

mail = SendGrid::Mail.new
mail.template_id = 'template id'
mail.from = Email.new(
  email: 'someone@somewhere.com',
  name: 'ABC')

personalization = SendGrid::Personalization.new
personalization.add_to(Email.new(email: 'someone@somewhere.com', name: 'ABC'))
personalization.add_dynamic_template_data(
  'variable' => [
    { 'first_name' => 'John' },
    { 'last_name' => 'Doe' },
    { 'email' => 'john@doe.com' },
    { 'message' => 'The message is as follows' }
  ]
)

mail.add_personalization(personalization)

sgp = SendGrid::API.new(api_key: ENV['sendgrid_api_key'])
response = sgp.client.mail._('send').post(request_body: mail.to_json)

模板代码如下所示。

Hello from {{first_name}} {{last_name}}.
{{message}} 

结果最终没有填写变量值。

Hello from .

【问题讨论】:

    标签: ruby-on-rails sendgrid


    【解决方案1】:

    这里是 Twilio SendGrid 开发人员宣传员。

    您添加的动态数据比模板更复杂。您可以只发送一个哈希,而不是发送一个哈希数组作为动态数据。试试这个:

    personalization.add_dynamic_template_data({
      'first_name' => 'John',
      'last_name' => 'Doe',
      'email' => 'john@doe.com',
      'message' => 'The message is as follows'
    })
    

    也见this example in the SendGrid Ruby library docs

    【讨论】:

    • 成功了!非常感谢您的回答!我在看这个源代码示例Sendgrid Git。我使用的代码位于最底部。谢谢你帮助我。赞赏。
    猜你喜欢
    • 2022-12-14
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多