【问题标题】:Rails delayed_jobs asking for "sender/from" when sending mailRails delay_jobs 在发送邮件时询问“发件人/发件人”
【发布时间】:2023-03-26 15:09:02
【问题描述】:

我正在尝试设置异步电子邮件发送。我正在使用延迟作业。没有 delay_job 一切正常,没有任何错误。但是当我添加时:

handle_asynchronously :mail_sending_method

我收到以下错误:

A sender (Return-Path, Sender or From) required to send a message

我使用 ActionMailer 发送邮件,具体如下:

mail(:to => user.email, :from => "notifications@example.com", :subject => "Blah")

方法如下:

def phrase_email(user, tweet, keyword, phrase)
    @user = user
    @tweet = tweet
    @keyword = keyword
    @phrase = phrase
    mail(:to => user.email, :from => "notifications@example.com", :subject => "Weekapp     Phrase Notification")
end

【问题讨论】:

  • 你能发帖mail_sending_method吗??

标签: ruby-on-rails email asynchronous delayed-job


【解决方案1】:

延迟作业与 Rails 3 Mailers 的工作方式不同。

class YourMailer < ActionMailer::Base
  def phrase_email(user, tweet, keyword, phrase)
    @user = user
    @tweet = tweet
    @keyword = keyword
    @phrase = phrase
    mail(:to => user.email, :from => "notifications@example.com", :subject => "Weekapp    Phrase Notification")
  end
end

因此,在调用您的邮件方法时,请使用delaydeliver,如下所示。

 YourMailer.delay.phrase_email(user, tweet, keyword, phrase) #With delay

 YourMailer.phrase_email(user, tweet, keyword, phrase).deliver  #Without delay

然后从 YourMailer 中删除 handle_asynchronously

文档here 中明确提到了这一点。您不能将handle_asynchronously 与邮件一起使用。

【讨论】:

  • 感谢您的回答。我试过了,我没有收到任何错误消息……但我也没有收到任何电子邮件……我稍后再检查一次……
  • 您是否从控制台检查延迟作业和延迟作业日志?我认为它工作正常。要在开发模式下将邮件发送到您的收件箱,您需要进行一些配置。所以我使用mailtrap 来检查邮件是否正常工作。看到这个github.com/mmower/mailtrap
  • 你好。我回到这个问题。所以我发现在延迟工作表中我的电子邮件被存储但最终没有发送。如何让它向真实地址发送电子邮件?
  • 是的,就是这样...我还没有运行那个守护进程 :D 非常感谢你的帮助!
猜你喜欢
  • 2020-06-14
  • 2019-01-09
  • 2019-04-06
  • 2017-06-11
  • 2012-12-02
  • 2010-10-07
  • 2015-10-09
  • 1970-01-01
  • 2016-01-21
相关资源
最近更新 更多