【问题标题】:how to retrieve message_id for a mail using deliver_later(sidekiq)如何使用deliver_later(sidekiq)检索邮件的message_id
【发布时间】:2018-07-15 09:34:22
【问题描述】:

我想要使用 Deliver_later(sidekiq) 的邮件的 SMTP message_id。

我可以在 Deliver_now 的返回 obj 中获取 id,但不能在 Deliver_later 中获取。

my_action_mailer 内部的 mail() 函数的返回值中也缺少 Message_id

  • 当我使用 -
  • 发送邮件时

sent_mail = some_mail().deliver_later

响应是一个sidekiq作业对象,看起来像这样-

#<ActionMailer::DeliveryJob:0x007fefa1454780 @arguments=["xxxxxxx", "xxxxxxx", "deliver_now", xxxxxxx], @job_id="69b13253-55f9-4db9-a10a-0e8e4b998584", @queue_name="mailers", @priority=nil, @executions=0, @provider_job_id="6f75131d0c485534322cd728">
  • 当我使用 -
  • 发送邮件时

sent_mail = some_mail().deliver_now

响应是一个对象对象,看起来像这样-

<Mail::Message:xx, Multipart: true, Headers: <Date: xx>, <From: "xx" <xx@xx.com>>, <Reply-To: "xx" <xx@xx.com>>, <To: ["xx@xx.com"]>, <Message-ID: <5a7863381167a_ba183fdfebc3f928907cb@xx-xx-xx.xx.mail>>, <Subject: xx>, <Mime-Version: 1.0>, <Content-Type: multipart/mixed; boundary="--==_mimepart_xx"; charset=UTF-8>, <Content-Transfer-Encoding: 7bit>>

如果您仔细查看上面的输出,返回类是 Mail::Message,它包含“Message-ID”,这正是我所需要的.

  • 此外,当我们在邮件程序类中调用 mail() 函数时,它也会返回 Mail::Message 对象,但此 obj 不包含从 SMTP 服务器返回的 Message-ID。

有什么方法可以让我使用 deliver_later

获取 Message-ID

【问题讨论】:

  • 你能发几行吗?
  • 发布年份代码和错误日志

标签: ruby-on-rails smtp actionmailer sidekiq messageid


【解决方案1】:

我遇到了同样的问题,但我决定改用 Mailgun HTTPS API,但在 Sidekiq 作业中。

所以我称这份工作为MailgunJob.perform_later(stuff_to_send)

在工作中

response = RestClient.post "https://mailgun_path", data
result = JSON.parse(response.body)
message_id = result['id']

你能不能使用一个工作,并且里面工作使用deliver_now

如果你找到了更好的解决方案,可以写在这里吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-17
    • 2015-08-02
    • 2016-08-03
    • 1970-01-01
    • 2012-09-16
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多