发送电子邮件对我们的业务至关重要。我们目前计划使用Mandrill作为我们的主要电子邮件提供商,但如果他们的服务中断,那么我们就任何故障都有备份服务(SendGrid)非常重要。
由于SMTP配置是在Application.rb中加载的(我相信在应用程序加载时只有一次),如果发送电子邮件失败,如何智能地回退到另一个SMTP服务?
答案 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