2

我正在使用 Heroku 和 SendGrid 设置邮件,并在尝试使用 Rails 发送电子邮件时遇到以下错误:

Net::SMTPFatalError (550 Cannot receive from specified address <my-email@domain.com>: Unauthenticated senders not allowed
2013-06-01T10:52:34.767516+00:00 app[web.1]:   app/controllers/api/v1/post_controller.rb:84:in `reply'

此域“my-email@domain.com”来自我的 Mailer 中的“默认发件人”字段:

class NotificationMailer < ActionMailer::Base
  default from: "my-email@domain.com"

  def post_notification_email(params)
    # Send mail here
  end
end

我最大的问题是我不知道这里到底要填写什么。这应该是我的电子邮件地址吗?它必须是我的域吗?是我的 Heroku 电子邮件吗?我的 SendGrid 电子邮件?不知道该怎么做才能让 SendGrid 开心。删除这条线并希望可以填写一些有效的东西也会导致错误。我被困住了。其他人的“默认来源”是什么?

还有一件,以防它很重要:这一切仍在开发中,所以我还没有将它连接到域。我还没有真正创建一个 SendGrid 帐户,只是将 SendGrid 插件添加到我在 Heroku 上的应用程序中。

更新:发布我的生产操作邮件配置:

ActionMailer::Base.smtp_settings = {
    :address        => 'smtp.sendgrid.net',
    :port           => '25',
    :authentication => :plain,
    :user_name      => ENV['SENDGRID_USERNAME'],
    :password       => ENV['SENDGRID_PASSWORD'],
    :domain         => 'domain.com',
    :enable_starttls_auto => true
  }
4

1 回答 1

0

验证您的 action_mailer 配置是否正确,(config/production.rb):

  # Sendgrid
  config.action_mailer.smtp_settings = {
    address: "smtp.sendgrid.net",
    port: 25,
    domain: "example.com",
    authentication: "plain",
    user_name: ENV["SENDGRID_USERNAME"],
    password: ENV["SENDGRID_PASSWORD"]
  }

不要忘记更改参数!将 sendgrid 添加到您的 heroku 应用程序中,如下所示(在您的终端中):

heroku addons:add sendgrid:starter

提交更改并将您的应用程序部署到 heroku。您应该能够从您之前定义的域发送电子邮件。

于 2013-06-01T13:13:18.527 回答