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
我的猜测是'Rails.application.secrets.owner_email'是'nil',如果需要的话,先尝试一个硬编码的值。 –
感谢您的回复,我运行了Rails控制台,是的,您对'owner_email'设置为'nil'。所以你的回答很有帮助,但我不确定这是为什么。我在考虑我的'.bash_profile'没有被识别。 – nomad
我不知道你的用例,你不应该使用'to:@ contact.email' - 和'from:Rails.application.secrets.owner_email'? –