带有 Heroku 的 Rails 不发送 Mandrill 电子邮件
Posted
技术标签:
【中文标题】带有 Heroku 的 Rails 不发送 Mandrill 电子邮件【英文标题】:Rails with Heroku not sending Mandrill emails 【发布时间】:2014-01-28 10:46:39 【问题描述】:我正在启动一个 Rails 应用程序,并希望使用 Mandrill 来确认 Devise 注册以及未来的其他功能。昨天它有时在本地工作,所以我想也许我会尝试 Heroku。
使用 Heroku 的 Mandrill 插件时它可以工作,但如果我将 ENV 凭据更改为我自己的 Mandrill 帐户,电子邮件就会积压在我自己的帐户中。
我正在使用两封个人电子邮件、gmail 和一封学校电子邮件对其进行测试。
我还使用 figaro 将我的环境变量复制到 Heroku。
production.rb:
config.action_mailer.smtp_settings =
:address => "smtp.mandrillapp.com",
:port => 587,
:user_name => ENV["MANDRILL_USERNAME"],
:password => ENV["MANDRILL_APIKEY"]
# ActionMailer Config
config.action_mailer.default_url_options = :host => 'herokuapp.com'
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = false
development.rb:
config.action_mailer.smtp_settings =
:address => "smtp.mandrillapp.com",
:port => 2525, # I also tried ports 25 and 587
:user_name => ENV["MANDRILL_USERNAME"],
:password => ENV["MANDRILL_APIKEY"]
# ActionMailer Config
config.action_mailer.default_url_options = :host => 'localhost:3000'
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
application.yml:
(我复制了实际的用户名和 API 密钥。)
MANDRILL_USERNAME: myemail@gmail.com
MANDRILL_APIKEY: ######################
ADMIN_NAME: First User
ADMIN_EMAIL: user@example.com
ADMIN_PASSWORD: changeme
ROLES: [admin, user, VIP]
Mandrill Heroku 为我提供的username
是something@heroku.com
。
【问题讨论】:
如果您仍然遇到此问题,请查看Can't get Mandrill to send emails from Rails App 和Using Mandrill's SMTP integration with Web Frameworks -- 端口587
为我工作,尽管我也将authentication
设置为plain
,并将enable_starttls_auto
设置为true
。
你确定吗,环境变量是从 application.yml 加载的,你也可以使用 config vars,看看这里devcenter.heroku.com/articles/config-vars
【参考方案1】:
对于面临同样问题的任何人。这是由 Mandrills 算法造成的,用于确定您在一段时间内允许发送多少封电子邮件。为了解决这个问题,我向他们的技术团队发送了电子邮件,他们能够提高限制。
【讨论】:
以上是关于带有 Heroku 的 Rails 不发送 Mandrill 电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
带有 master.key 的 Rails 5.2 - Heroku 部署
将带有 SQLite3 的 Rails 推送到 Heroku 失败 [重复]
邮件未在 rails 上使用 devise、heroku 和邮戳发送
Mailform 在本地工作,但不在生产环境中(Heroku、Rails)