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”,以便可以调用 to: 收件人。

user_mailer.rb

class UserMailer < ApplicationMailer

      default from: "do-not-reply@example.com"

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

联系人控制者.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 

联系人.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
4

1 回答 1

1

我能够确定解决此问题的方法。我设置了一个新的 gem 文件 - https://github.com/bkeepers/dotenv,以便我可以将我的 env 变量添加到 .env 文件而不是 .bashrc 或 .bash_profile。这解决了这个问题。

于 2015-12-31T19:47:51.007 回答