2017-01-23 134 views
1

我貨架我的大腦試圖找出到底是怎麼回事......爲什麼ActionMailer會失敗? SMTP解決的是需要

我打電話BidMailer.confirm(Bid.last.id).deliver在軌控制檯,我得到了以下錯誤:

ArgumentError:發送郵件需要SMTP To地址。設置消息smtp_envelope_to,to,cc或bcc地址。

我的代碼:

的environment.rb

ActionMailer::Base.smtp_settings = { 
    user_name: ENV['SENDGRID_USERNAME'], 
    password: ENV['SENDGRID_PASSWORD'], 
    domain: ENV['SENDGRID_DOMAIN'], 
    address: "smtp.sendgrid.net", 
    port: 587, 
    authentication: :plain, 
    enable_starttls_auto: true 
} 

環境/ development.rb

config.action_mailer.delivery_method = :smtp 
config.action_mailer.raise_delivery_errors = true 
config.action_mailer.perform_deliveries = true 

郵寄/ bid_mailer.rb

class BidMailer < ApplicationMailer 
    def confirm(bid_id) 
    @bid = present Bid.find(bid_id) 
    mail(
     to: @bid.user.email, 
     subject: "Your request for #{@bid.event_name}" 
    ) 
    end 
end 

如果我打印出@bid.user.email,我的電子郵件顯示正常。

回答

1

您需要一個from地址,例如mail(to: "[email protected]", subject: "Your request for #{@bid.event_name}", reply_to: "[email protected])。也可以嘗試用一個字符串替換@bid.user.email進行調試。

+0

的從'ApplicationMailer' –

+0

定義此外,我已經指定了'@ bid.user.email'已被證實是有效的電子郵件地址 –

+0

作爲第一個調試我會硬編碼像'ENV所有值['SENDGRID_USERNAME ']'和'@ bid.user.email',因爲您的環境可能無法訪問所有變量 – Shannon

相關問題