2015-12-31 51 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。这解决了这个问题。

相关问题