18

我需要使用邮件程序向用户发送电子邮件,以将他们的密码设置为 Devise 和活动管理员的“可恢复”功能。在开发环境中,我通过将以下内容添加到这些文件中来完成此操作:

配置/环境/开发

#Added per active admin install instructions
config.action_mailer.default_url_options = { :host => 'localhost:3000' }


#These settings are for the sending out email for active admin and consequently the   devise mailer
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.smtp_settings = 
{

  :address            => 'smtp.gmail.com',
  :port               => 587,
  :domain             => 'gmail.com', #you can also use google.com
  :authentication     => :plain,
  :user_name          => 'XXXXX@gmail.com',
  :password           => 'XXXXXXX'
}

如何在生产环境中获得相同的功能?我想将我的应用程序部署到 Heroku。我需要添加哪些文件和代码?

4

3 回答 3

12

您在开发模式下设置的所有配置都将起作用,除了您需要重新配置默认邮件程序 url。

所以。

  1. 从 development.rb 复制粘贴您的设置。

  2. 将您的默认邮件程序指向您的 heroku 应用程序:

    config.action_mailer.default_url_options = { :host => 'YOURAPPNAME.herokuapp.com' }
    

此外,请注意您的 smtp 在迁移到生产环境时可能存在的任何电子邮件限制。例如,在开发过程中很难触发 gmail 的 smtp 限制,但在生产中更容易触发它们。

于 2014-05-26T22:05:37.270 回答
4

如果它在开发模式下工作,那么它将在生产模式下工作。

假设一切设置正确,在开发中重置密码将已经使用您的 gmail 帐户发送实际电子邮件。

设计仅依赖于正确的邮件配置设置(您已完成),并配置设计以允许密码重置,以及可能的电子邮件“发件人”字段的另一个设置。

于 2012-08-17T00:51:02.523 回答
4

这应该可以正常工作!

只要 config/environments/production.rb 有相同的东西有一个例外。default_url_options 的 :host 值应仅在开发中为“localhost”,在 heroku 生产中应为“YOURAPPNAME.herokuapp.com”。

IE

config.action_mailer.default_url_options = { :host => 'YOURAPPNAME.herokuapp.com' }

记得在 gmail 上解锁验证码,否则它不会从 heroku 发送电子邮件(来源不明)。您可以通过以下链接进行操作:http ://www.google.com/accounts/DisplayUnlockCaptcha

作为一个建议,我会说从environments.rb中移出这个

ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.raise_delivery_errors = true

并且位置在environments/development.rb中

config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true

生产中不需要它。

从 Rails 应用程序(在临时环境中)发送电子邮件时,请参阅Net::SMTPAuthenticationError以获取有关 gmail 将 heroku 视为未知主机的更多信息。

于 2015-07-30T14:23:34.867 回答