2012-04-16 2 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

+1

'@ invoice.account.accountable.email' является строковым литералом. "#{@invoice.account.accountable.email}" будет работать, хотя нет смысла использовать интерполяцию. –

Смежные вопросы