发送消息/参数错误需要SMTP To地址

时间:2016-12-14 23:29:38

标签: ruby-on-rails ruby ruby-on-rails-3 rubygems mailchimp

ArgumentError at /contacts An SMTP To address is required to send a message. Set the message smtp_envelope_to, to, cc, or bcc address.

美好的一天伙计们,我在调试这个问题时遇到了麻烦,并且花了很多时间我需要你的帮助和解释,说明它为什么不起作用。

我已经做过的事情: 1.添加了gem' binding_of_caller' 2.bundle install

的目标: 当访问者提交联系表格时,它应该自动向我发送电子邮件。

我的困境/困惑:

1.如何在secrets.yml中设置电子邮件,或者将您的电子邮件直接配置到您的电子邮件中 我做了什么   至:myemail.com> secretts.yml在生产和发展中 我说得对吗?

请向我解释一下,因为我正在深入研究铁轨上的红宝石。

1 个答案:

答案 0 :(得分:0)

您需要先生成邮件程序。

rails g mailer example_mailer

app / mailers / example_mailer.rb此文件将由此行生成。

然后,您需要在邮件程序中创建一个方法,您可以在其中定义发送邮件的人员。您可以提供直接的电子邮件ID,也可以从数据库中获取。在我给出的示例中,您需要将用户传递给此方法,并且它将向该用户的电子邮件发送电子邮件。

  def sample_email(user)
    @user = user
    mail(to: @user.email, subject: 'Sample Email')
  end

为邮件的外观创建HTML模板

  

应用程序/视图/ example_mailer / sample_email.html.erb

<!DOCTYPE html>
<html>
  <head>
    <meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />
  </head>
  <body>
    <h1>Hi <%= @user.name %></h1>
    <p>
      Sample mail sent using smtp.
    </p>
  </body>
</html>

然后,无论您使用哪种环境,都需要在/config/environments/production.rb或/config/environments/development.rb中配置smtp。

config.action_mailer.delivery_method = :smtp
# SMTP settings for gmail
config.action_mailer.smtp_settings = {
 :address              => "smtp.gmail.com",
 :port                 => 587,
 :user_name            => 'username@gmail.com',
 :password             => 'Gmail password',
 :authentication       => "plain",
:enable_starttls_auto => true
}

然后,您需要从发送邮件的任何方法触发邮件操作。

ExampleMailer.sample_email(@user).deliver