【问题标题】:Mandrill send email to multiple with arrayMandrill 使用数组向多个发送电子邮件
【发布时间】:2015-05-09 09:35:34
【问题描述】:

我正在使用 Mandrill API 发送电子邮件。我有一堆@request.agents(一组代理 ID),我想向数组中的所有代理发送电子邮件。

这是我目前的方法,但它似乎没有通过a(我知道这可能是完全错误的方法)

def new_request_agents(request, user)

    @request = request
    @user = user

    template_name = "new-request"
    template_content = []
    message = {
        to: [
                request.agents.each do |a| 
                  if a != ""
                    {
                        email: Agent.find(a.to_i).email
                    }
                  end
                end
            ],
        subject: "New Request: #{user.email}",
        merge_vars: [
            {rcpt: @user.email,
            vars: [
                {name: "MESSAGE", content: request.message},
                {name: "AGENTS", content: request.agents}
                ]
            }
        ]
    }

    mandrill_client.messages.send_template template_name, template_content, message
end

有没有更好的(和有效的)方法来做到这一点?

更新

我的 API 日志显示:

{
"template_name": "new-request",
"template_content": {},
"message": {
    "to": [
        [
            "",
            "4",
            "5"
        ]
    ],
    "subject": "New Request: example@gmail.com",
    "merge_vars": [
        {
            "vars": [
                {
                    "name": "MESSAGE",
                    "content": "Test message"
                },
                {
                    "name": "AGENTS",
                    "content": [
                        "",
                        "4",
                        "5"
                    ]
                }
            ]
        }
    ]
},
"async": false,
"ip_pool": null,
"send_at": null,
"key": "B-B_-yRi1LLLhBrzZEVLLw"

}

【问题讨论】:

  • 请确保message 是正确的:message.inspect
  • 您的问题是生成的message 对象不包含您希望它包含的内容,还是其中的所有内容都符合预期,但 Mandrill 做错了什么?
  • @janfoeh 我的问题是它根本不会发送。我收到Couldn't find Agent with id= 错误。我认为我使用 each 循环是错误的方法?

标签: ruby-on-rails arrays email mandrill


【解决方案1】:

您应该从merge_vars 中删除rcpt,因为收件人不止一个。

并确保message 确实包含您的所有电子邮件,方法是:message.inspect

另一个好的做法是查看 mandrill 仪表板中的 API 日志。总有有用的信息。

更新:

试试这个

request.agents.each do |a| 
  {
    email: a.email
  }
end

【讨论】:

  • 谢谢皮埃尔。看起来a 没有在循环中传递,因为我得到了Couldn't find Agent with id=,我在每个循环中这样做是否正确?
  • a 包含什么?它似乎不包含 ID,因此您不能将其与 find 一起使用。如果它包含一封电子邮件,您可以按照我在帖子中写的操作。
  • a 实际上只是一个数字数组,它们是代理的 ID。我在我的 API 日志中添加了更新。看起来它没有正确请求它,因为电子邮件只是以数字形式出现。我添加了if a != "",因为它看起来第一个数组值是空白的,这就是我收到原始错误的原因
猜你喜欢
  • 2016-02-28
  • 2016-03-14
  • 2023-03-28
  • 2014-05-04
  • 1970-01-01
  • 2016-07-04
  • 2015-04-23
  • 2012-06-11
  • 2013-06-22
相关资源
最近更新 更多