发送消息/参数错误需要 SMTP 收件人地址

Posted

技术标签:

【中文标题】发送消息/参数错误需要 SMTP 收件人地址【英文标题】:An SMTP To address is required to send a message/Argument Errror 【发布时间】:2017-04-30 10:57:54 【问题描述】:

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.添加宝石'binding_of_caller' 2.捆绑安装

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

我的烦恼/困惑:

1.您如何在secrets.yml中设置您的电子邮件或将您配置联系表单请求的电子邮件直接放入您的电子邮件 2.我做的是放 to:myemail.com > 生产和开发中的secrets.yml 3.我说的对吗?

当我深入研究 ruby​​ on rails 时,请向我解释一下。

【问题讨论】:

Rails 指南中关于如何设置电子邮件的内容非常清楚 调用者的绑定与电子邮件无关。展示 1. Mailer 应该在什么时候采取行动(有时这在模型中,有时在控制器中。向我们展示用于捕获访问者信息的任何位置的控制器和模型。它是否填充 :users 表? 从发布这些以及您收到的确切错误消息开始,您会从我或其他人那里获得帮助。 好的,谢谢,我会的 【参考方案1】:

你需要先生成一个邮件。

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 模板

app/views/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

【讨论】:

谢谢您,先生,仍在学习曲线上,但是我需要再次阅读基础知识。我已经注意到了这个问题,以后会随着我的进步解决这个问题。感谢您的所有帮助

以上是关于发送消息/参数错误需要 SMTP 收件人地址的主要内容,如果未能解决你的问题,请参考以下文章

SMTP 错误:尝试使用 python 和 postfix 发送电子邮件时出现“收件人地址被拒绝”

如何将消息发送给多个收件人

48. Python 发邮件

JavaMail

Python使用SMTP模块email模块发送邮件

通常有那些原因导致电子邮件的发送失败?