Rails 4 多个 SMTP 配置

Rails 4 multiple SMTP configurations

我的 rails 4 应用程序在使用 MailgunSendgrid 时工作正常。我想同时使用前者。发送订单时要经过 Sendgrid 以及创建工单时要经过 Mailgun.

我有两个帐户,我的 config/environments/development.rb 看起来像:

 config.action_mailer.smtp_settings = {
    address: 'smtp.mailgun.org',
    port: 587,
    user_name: 'some_username',
    password: 'some_password',
    authentication: 'plain',
    enable_starttls_auto: true   }

如果我用 Sengrid smtp_settings 替换,它会从 Sendgrid 开始发送,但正如我提到的,我想要两者并选择哪个用于特定功能。

谢谢

针对不同的环境,您可以设置不同的电子邮件配置

config/environments/staging.rb 一项邮件服务中,

config/environments/production.rb秒内,

对于config/environments/development.rb我建议你使用letter_opener

然后在不同的环境模式下您将使用适当的邮件设置

编辑

我想这是个错误的决定,但是 如果你想通过两个邮件服务发送相同的邮件,你可以重新定义 ActionMailer::Base.smtp_settings.

只需创建两个邮件程序并在邮件程序中重新定义设置即可:

第一

class MailgunUserMailer < ApplicationMailer
  ActionMailer::Base.smtp_settings = {
      address: 'smtp.mailgun.org',
      port: 587,
      user_name: 'some_username',
      password: 'some_password',
      authentication: 'plain',
      enable_starttls_auto: true   }

  def created(@user)
    .....

第二个

class MandrillUserMailer < ApplicationMailer
  ActionMailer::Base.smtp_settings = {
      address: 'smtp.mandrill.com',
      port: 587,
      user_name: 'some_username',
      password: 'some_password',
      authentication: 'plain',
      enable_starttls_auto: true   }

  def created(@user)
    .....

并且您可以通过 2 个提供商发送相同的电子邮件:

MailgunUserMailer.created.deliver MandrillUserMailer.created.deliver