2013-01-10 37 views
4

我正嘗試通過rails中的delayed_job gem發送郵件。 我打電話行動郵件的方法從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 

它沒有顯示出任何錯誤,但我沒有得到任何郵件也。

回答

2

由於錯誤提示:您缺少return-pathsenderfrom字段。設置一個from場並不難:

mail(:to => demo.email, :from => '[email protected]', :subject => "Confirmation") 

更多信息,請參見ActionMailer#mail documentation

+2

我使用default:from =>'[email protected]'在頂部,沒有delayed_job它工作正常 –

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 => '[email protected]', :subject => "Confirmation")

相關問題