在生产中使用 Mandrill 发送设计电子邮件

Posted

技术标签:

【中文标题】在生产中使用 Mandrill 发送设计电子邮件【英文标题】:Send Devise E-mails using Mandrill in Production 【发布时间】:2015-02-01 16:16:06 【问题描述】:

我正在尝试从我的 Rails 4 应用程序发送设计电子邮件。我不想更改模板或任何东西,我只想在生产环境中使用 Mandrill 传递消息。

我的production.rb是这样的:

  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.perform_deliveries = true
  config.action_mailer.default_url_options = :host => 'sociedadeavalia.com.br'
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = 
    :address => "smtp.mandrilapp.com",
    :port    => 587,
    :user_name => ENV['MANDRILL_USERNAME'],
    :password => ENV['MANDRILL_APIKEY'],
    :authentication => 'login',
    :enable_starttls_auto => true,
    :domain  => 'sociedadeavalia.com.br'
  

我的devise.rb有这个

config.mailer_sender = 'no-reply@sociedadeavalia.com.br'
config.mailer = 'MyDeviseMailer'

我创建了以下邮件:

class MyDeviseMailer < Devise::Mailer
  helper :application
  include Devise::Controllers::UrlHelpers
  default template_path: 'devise/mailer'  
end

现在,每当我尝试在生产中发送电子邮件(用于创建新用户帐户的确认电子邮件)时,我的应用程序就会崩溃,并且会出现在日志中:

31 <190>1 2014-12-03T22:17:07.987969+00:00 app web.1 - - Net::OpenTimeout (execution expired):

在这种情况下我该怎么办?

【问题讨论】:

【参考方案1】:

您似乎遇到了端口被阻止的问题。我们推荐故障排除步骤here。更具体地说,尝试更改您正在使用的端口 - 2525 通常不会被阻止,或者在启用 SSL 的情况下使用 465。许多主机阻止 25 和 587 以帮助防止垃圾邮件。

【讨论】:

【参考方案2】:

尝试将身份验证更改为“普通”。这对我有用。

:authentication => 'plain',

【讨论】:

也许您的网络服务器和山魈有一些 IP 限制? 我不知道。但我尝试从 Mandrill Dashboard 向我在应用程序中使用的地址发送一封电子邮件,并且成功了。可在仪表板中使用,但不能在应用中使用。

以上是关于在生产中使用 Mandrill 发送设计电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

是否可以为 Mandrill 创建“开发”API 密钥?

Rails 中 ActionMailer Mandrill 的问题

SMTP 配置在生产中不起作用

Rails 邮件程序山魈设置

设计不通过ActionMailer发送电子邮件

Vercel中的Nodemailer不在生产中发送电子邮件