Ruby On Rails中的SMTP Action Mailer故障转移

时间:2013-08-27 15:46:14

标签: ruby-on-rails ruby email smtp actionmailer

发送电子邮件对我们的业务至关重要。我们目前计划使用Mandrill作为我们的主要电子邮件提供商,但如果他们的服务中断,那么我们就任何故障都有备份服务(SendGrid)非常重要。

由于SMTP配置是在Application.rb中加载的(我相信在应用程序加载时只有一次),如果发送电子邮件失败,如何智能地回退到另一个SMTP服务?

2 个答案:

答案 0 :(得分:3)

建议SendGrid gives customers to whom email sending is crucial不是在Rails中进行切换/回退,而是设置本地邮件服务器(例如使用Postfix)并设置邮件服务器以将SendGrid用作智能主机。 / p>

在您的情况下,您可以将Mandrill设置为中继服务器,将SendGrid设置为备用中继服务器。如果Mandrill发生故障,您的本地服务器将负责通过Mandrill和SendGrid进行发送。

答案 1 :(得分:-1)

这是我的解决方案:

class UserMailer < ActionMailer::Base

  def welcome_message(user, custom_email=nil, settings)
    ActionMailer::Base.username = settings["username"]
    ActionMailer::Base.password = settings["password"]
    ActionMailer::Base.server = settings["server"]
    ActionMailer::Base.port = settings["port"]

    target_email = custom_email || user.email
    mail(to: target_email, subject: 'Welcome')
  end
end