为什么我的Heroku应用在生产环境中使用Sendgrid不能发送电子邮件?

3

我的设备在开发环境下能够正常发邮件。

但是现在我已经将代码推送到了Heroku并使用了sendgrid插件,但邮件无法发送。我没有收到任何错误信息,看起来邮件发送非常顺利,只是没有真正到达我的收件箱。

以下是我的config/environment/production.rb文件:

config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = false
config.action_mailer.default :charset => "utf-8"
config.action_mailer.default_url_options = { :host => 'http://myapp.herokuapp.com' }

config.action_mailer.smtp_settings = {
  :user_name => ENV["SENDGRID_USERNAME"],
  :password => ENV["SENDGRID_PASSWORD"],
  :address => 'smtp.sendgrid.net',
  :domain => 'myapp.herokuapp.com',
  :port => 587,
  :authentication => :plain,
  :enable_starttls_auto => true
}

我在Heroku上检查了这些配置变量,并返回了有效结果。

有什么想法吗?

附注:我的域名还没有指向Heroku应用程序,我只是想首先使用Heroku的默认设置进行测试。

2个回答

6

一切看起来都不错,你检查过SendGrid账户是否已经开通了吗?

如果你在Heroku上,前往SendGrid面板完成设置。只需访问应用程序配置文件,在资源下(默认为此),您应该会看到SendGrid加入项,请单击它并确保已设置好所有内容。 在这种情况下,它会要求你设置一个模板,但你可以选择“跳过”。

希望这可以帮助你!


我需要在Sendgrid注册吗?我只是添加了这个附加组件。 - marcamillion
1
如果您正在使用Heroku,请前往SendGrid面板完成设置,只需访问应用程序配置文件并在资源下(默认情况下)即可看到SendGrid插件,单击它,然后确保您已经完成了所有设置。在这种情况下,它会要求您设置一个模板,但您可以“跳过”此步骤。 - kurenn
啊...我没有做那个。谢谢! - marcamillion
那就是解决方案。请编辑您的答案以表明,我会接受它。谢谢! - marcamillion

1
这也发生在我身上,或者类似的情况。我只使用电子邮件发送给一个电子邮件地址,用于我的个人通知。
结果发现,该电子邮件地址第一次被“退回”,并且在Sendgrid中被“抑制”以进行未来的发送。我会检查“禁止发送”选项卡,以确保您没有遇到相同的问题。

我尝试发送的第一封电子邮件是发给一个无效电子邮件地址的示例用户。这封邮件被退回并导致我的账户被暂停。我联系了SendGrid支持团队,他们很快重新激活了我的账户。吸取的教训(或者说重新学到的教训):不要在生产环境中发送到示例电子邮件地址。 - Hula_Zell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接