2012-04-16 26 views
2

我正在使用rails3.0.6和ruby 1.8.7,我可以很容易地從我的應用程序開發模式發送電子郵件。但昨晚我看到一個新的錯誤,當我試圖發送郵件給我的客戶的電子郵件是多態與我的發票模型相關聯。錯誤是:Net :: SMTPSyntaxError

Net::SMTPSyntaxError in InvoicesController#email_invoice 
501 <@invoice.account.accountable.email>: missing or malformed local part 

我對email.rb文件中的代碼是:

def send_invoice(invoice) 
    email = '@invoice.account.accountable.email' 
    mail(:to => email, :from => "[email protected]", :subject=>"Invoice, check it.") 
end 

,並在我的invoice controller我所做的:

def email_invoice 
    @company = Company.find(User.find(session[:current_user_id])) 
    @invoice = Invoice.find(params[:id]) 
    @invoice_line_items = @invoice.invoice_line_items 
    @receipt_vouchers = @invoice.receipt_vouchers 
    #email = @invoice.account.accountable.email 
    Email.send_invoice(@invoice).deliver 
    redirect_to invoice_path(@invoice) 
    flash[:success] = 'Email has been sent successfully.' 
end 

我瞪大眼睛了這個錯誤,並發現它導致由於錯誤的電子郵件地址或錯誤的SMTP設置,但我的SMTP設置是好的,因爲我可以從我的應用程序發送電子郵件,但有問題的下線:

@invoice.account.accountable.email 

任何幫助將是thaknful ..

回答

1

我想出了一個解決方案,我在email.rb文件在我的郵件發錯:

def send_invoice(invoice) 
    email = '@invoice.account.accountable.email' 
    mail(:to => email, :from => "[email protected]", :subject=>"Invoice, check it.") 
end 

它應該是:

def send_invoice(invoice) 
    email = invoice.account.accountable.email 
    mail(:to => email, :from => "[email protected]", :subject=>"Invoice, check it.") 
end 

現在我可以很容易地發送電子郵件..

+0

我把字符串郵件文件中未接受的電子郵件地址,現在我已更新我的代碼 – Ravindra 2012-04-17 07:10:17

+1

'@ invoice.account.accountable.email'是一個字符串文字。 「#{@invoice.account.accountable.email}」可以工作,但使用插值沒有意義。 – 2013-04-02 06:13:48