【问题标题】:An SMTP to address is required to send a message发送邮件需要 SMTP 到地址
【发布时间】:2014-06-24 14:28:29
【问题描述】:

我正在尝试使用 Devise 发送重置密码电子邮件。

错误:

: An SMTP To address is required to send a message. Set the message smtp_envelope_to, to, cc, or bcc address.
from /app/vendor/bundle/ruby/2.1.0/gems/mail-2.5.4/lib/mail/check_delivery_params.rb:9:in `check_delivery_params'
from /app/vendor/bundle/ruby/2.1.0/gems/mail-2.5.4/lib/mail/network/delivery_methods/smtp.rb:98:in `deliver!'
from /app/vendor/bundle/ruby/2.1.0/gems/mail-2.5.4/lib/mail/message.rb:2129:in `do_delivery'
from /app/vendor/bundle/ruby/2.1.0/gems/mail-2.5.4/lib/mail/message.rb:234:in `deliver'
from (irb):27
from /app/vendor/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/commands/console.rb:90:in `start'
from /app/vendor/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/commands/console.rb:9:in `start'
from /app/vendor/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/commands.rb:62:in `<top (required)>'

我尝试手动构建邮件对象:

mail = Mail.new do
  from    'name@mydomain.com'
  to      'name@mydomain.com'
  subject 'This is a test email'
  body    File.read('body.txt')
end

并运行mail.smtp_envelope_to 返回[]。当我运行mail.To = 'name@mydomain.com',mail.smtp_envelope_toreturns["name@mydomain.com"]。

为什么会出现这个错误?

编辑:SMTP_SETTINGS

if Rails.env.staging? || Rails.env.production?
  SMTP_SETTINGS = {
    address: ENV['SMTP_ADDRESS'], # example: 'smtp.sendgrid.net'
    authentication: :plain,
    domain: ENV['BASE_URL'], # example: 'this-app.com'
    password: ENV['SENDGRID_PASSWORD'],
    port: '587',
    user_name: ENV['SENDGRID_USERNAME']
  }
end

编辑:缺少的报价是错误的重新输入。请参阅我的 Rails 代码的 SMTP_SETTINGS。第一个代码块是我试图从控制台重现邮件错误。

【问题讨论】:

  • 我想是因为您没有在发件人地址上添加结束 '
  • 如果 Rails.env.staging? || Rails.env.production? SMTP_SETTINGS = { 地址:ENV['SMTP_ADDRESS'],# 示例:'smtp.sendgrid.net' 身份验证::plain,域:ENV['BASE_URL'],# 示例:'this-app.com' 密码:ENV[ 'SENDGRID_PASSWORD'],端口:'587',用户名:ENV['SENDGRID_USERNAME'] } 结束
  • 我会问一个愚蠢的问题:有问题的用户记录有电子邮件吗?您使用的是 Devise 的默认邮件程序还是自定义邮件程序?

标签: ruby-on-rails devise actionmailer


【解决方案1】:

原来我认为我移除的 Suspenders 中的 Gem,receiver-interceptor,被留在里面了。

删除解决了问题。

【讨论】:

  • 如果最终用户不使用 staging,Configuring it 也可以解决此问题。
  • 谢谢@colinm。最终用户开始使用它。
猜你喜欢
  • 1970-01-01
  • 2013-08-27
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 2013-08-16
  • 2017-04-30
  • 2014-12-28
  • 2023-03-16
相关资源
最近更新 更多