使用SendGrid的Rails ActionMailer

8
我正在使用SendGrid在Heroku上发送邮件...目前的问题是,虽然在Heroku上运行得很好,但在我的本地主机上却失败了。现在我已经在这里安装了SendGrid,并进行了配置/设置mail.rb:
ActionMailer::Base.smtp_settings = {
  :address        => "smtp.sendgrid.net",
  :port           => "25",
  :authentication => :plain,
  :user_name      => ENV['SENDGRID_USERNAME'],
  :password       => ENV['SENDGRID_PASSWORD'],
  :domain         => ENV['SENDGRID_DOMAIN']
}

如何使用Heroku/SendGrid确保我的邮件发送程序在开发环境中正常工作?是否应该使用setup_mail.rb文件?它应该放在env文件中吗?还有其他想法吗?

谢谢

2个回答

11

如tfe所提到的那样,使用config/environments/[development.rb | production.rb]似乎是最好的方法。只需将ActionMailer配置放在其中一个文件中,并根据开发|生产环境进行更改。

另外,您可以通过下面的命令找到Heroku使用的SendGrid凭据:

heroku config --long

这些凭据用于所有SendGrid身份验证(SMTP身份验证,登录网站查看统计信息等,API访问)。

-- Joe

SendGrid


2
似乎 heroku config --long 不再起作用了。但是 heroku config:get SENDGRID_USERNAMEheroku config:get SENDGRID_PASSWORD 可以获取相同的信息。 - Nate Cook
5
无需参数,只需使用 heroku config 命令。 - Justin D.

4

只需在开发环境中设置环境变量SENDGRID_USERNAMESENDGRID_PASSWORDSENDGRID_DOMAIN,然后它就能正常工作。

您可以从Heroku应用程序中获取这些变量的正确值。打开Heroku控制台并获取ENV['SENDGRID_USERNAME']等的值。

或者在本地使用不同的SMTP设置。或者使用sendmail或其他方法。


谢谢,"在本地使用不同的SMTP设置" 这正是我想学习如何做的。在Rails中跨环境进行此设置的正确方法是什么? - AnApprentice
我相信你可以在每个环境初始化文件(config/environments/foo.rb)中设置ActionMailer::Base.smtp_settings。我不确定这是否符合Rails的规范;我已经有一段时间没有以这种方式配置邮件了。 - tfe
1
我在Heroku上运行了几个应用程序,并使用SendGrid,但遇到了相同的问题(希望在本地发送邮件以及在Heroku上发送)。我所做的就是自己去SendGrid注册一个帐户。然后我有了用户名和密码,可以在所有环境中设置应用程序,并且这些凭据不会被锁定在Heroku应用程序的“ENV”中。 - tfe

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