4

我正在尝试使用rails 中的delayed_job gem 从action mailer 发送电子邮件。我正在从 after_create 回调中调用操作邮件程序的方法

在演示模型中

after_create :send_mail
def send_mail
  DemoMailer.to_client( self).deliver
end

在 demo_mailer

def to_client( demo)
  @demo = demo
  mail(:to => demo.email, :subject => "Confirmation")
end
handle_asynchronously :to_client

它显示一个错误

ArgumentError in DemosController#create

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

然后我改变

def send_mail
  DemoMailer.to_client( self).deliver
end

def send_mail
  DemoMailer.delay.to_client( self)
end

它没有显示任何错误,但我也没有收到任何邮件。

4

2 回答 2

2

正如错误所示:您缺少return-path,senderfrom字段。设置from字段并不难:

mail(:to => demo.email, :from => 'webmaster@your-domain.com', :subject => "Confirmation")

有关详细信息,请参阅ActionMailer#mail 文档

于 2013-01-10T08:07:45.007 回答
1

如果您设置from在顶部:

class FoobarMailer < ActionMailer::Base
  default from: SomeClass.email_variable
  #...

你可以试试这个:

class FoobarMailer < ActionMailer::Base
  default from: -> { SomeClass.email_variable }
  #...

或者像@Veger 提到的那样发送它:

mail(:to => demo.email, :from => 'webmaster@your-domain.com', :subject => "Confirmation")

于 2013-06-05T14:33:55.113 回答