2015-12-31 113 views
0

我正在閱讀http://learn-rails.com/content/online#send-mail以配置交易電子郵件。我到了章的結尾和測試時,我收到以下錯誤:配置交易電子郵件的收件人:收件人

"An SMTP To address is required to send a message. Set the message smtp_envelope_to, to, cc, or bcc address." 

我有「secrets.yml」和「的.bash_profile」適當的配置,以便於:收件人可以被調用。

user_mailer.rb

class UserMailer < ApplicationMailer 

     default from: "[email protected]" 

     def contact_email(contact) 
     @contact = contact 
     mail(to: Rails.application.secrets.owner_email, from: @contact.email, :subject => "Website Contact") 
     end 
    end 

contacts_conrtoller.rb

class ContactsController < ApplicationController 

    def new 
    @contact = Contact.new 
    end 

    def create 
    @contact = Contact.new(secure_params) 
    if @contact.valid? 
     UserMailer.contact_email(@contact).deliver_now 
     flash[:notice] = "Message sent from #{@contact.name}." 
     redirect_to root_path 
    else 
     render :new 
    end 
    end 

    private 

    def secure_params 
    params.require(:contact).permit(:name, :email, :content) 
    end 

end 

contact.rb

class Contact 

    include ActiveModel::Model 
    attr_accessor :name, :string 
    attr_accessor :email, :string 
    attr_accessor :content, :string 

    validates_presence_of :name 
    validates_presence_of :email 
    validates_presence_of :content 
    validates_format_of :email, 
    with: /\A[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}\z/i 
    validates_length_of :content, :maximum => 500 

end 
+0

我的猜測是'Rails.application.secrets.owner_email'是'nil',如果需要的話,先嚐試一個硬編碼的值。 –

+0

感謝您的回覆,我運行了Rails控制檯,是的,您對'owner_email'設置爲'nil'。所以你的回答很有幫助,但我不確定這是爲什麼。我在考慮我的'.bash_profile'沒有被識別。 – nomad

+0

我不知道你的用例,你不應該使用'to:@ contact.email' - 和'from:Rails.application.secrets.owner_email'? –

回答

1

我能確定一個解決這個問題。我建立了一個新的gem文件 - https://github.com/bkeepers/dotenv,這樣我就可以將我的env變量添加到.env文件中,而不是.bashrc或.bash_profile。這解決了這個問題。

相關問題