2012-11-21 58 views
0

我有一個Rails 3應用程序發送電子郵件到多個(2)收件人。第一個收件人是必需的,但第二個不是必需的。如果第二個收件人爲空,則會出現錯誤。如何在不發生錯誤的情況下繞過次要電子郵件?Rails 3 Actionmailer - 如何發送電子郵件只存在

def email_approvers(invoice) 
    @subject   = 'Invoice Approval Request' 
    @body["invoice"] = invoice 
    @recipients  = invoice.approver_email, invoice.alternate_approver_email 
    @from    = "..." 
    @sent_on   = Time.now 
    @headers   = {}  
    end 

回答

0

您應該看到http://edgeguides.rubyonrails.org/action_mailer_basics.html#complete-list-of-action-mailer-methods(2.3.4發送電子郵件給多個收件人)。您可以使用電子郵件創建數組(可以在類Invoice中創建一個返回有效電子郵件數組的方法)。

在郵件:

default :from => "..." 

def email_approvers(invoice) 
    @data = invoice  
    mail :to => @data.recipients, :subject => 'Invoice Approval Request' 
end 

在發票型號:

def recipients 
    return alternate_approver_email.nil? ? [approver_email] : [approver_email, alternate_approver_email] 
end 

-

對於您的情況下(將屬性設置爲如果沒有值,所以前面的代碼將起作用):

def alternate_approver_email 
    self.alternate_approver_email = !self.alternate_approver_username.nil? ? self.alternate_approver_username + "@email.com" : nil 
end 
+0

感謝您的提示。你能用這種方法的骨架來幫助我嗎?我不太瞭解... –

+0

對不起,我幾乎看不到這條消息。我將編輯答案並添加示例 – pablomarti

+0

感謝。當alternate_approver_email爲空時,我得到以下錯誤:'NoMethodError(未定義方法編碼爲[「[email protected]」,「@ email.com」]:Array)' –

相關問題