2016-01-25 53 views
0

我的rails 4應用程序在使用MailgunSendgrid時工作正常。我想同時使用前。發送訂單時要通過Sendgrid以及創建門票時要通過MailgunRails 4多個SMTP配置

我有兩個帳戶和我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發送代替,但正如我所說,我希望同時和選哪一個特定的功能。

謝謝

+0

如何使用這兩種服務?你是指在不同的環境中還是同時? –

+0

我的意思是在不同的環境中 – Fi3n1k

回答

1

針對不同的環境中,您可以設置不同的電子郵件配置

config/environments/staging.rb一個郵件服務,

config/environments/production.rb

config/environments/development.rb我建議你使用letter_opener

然後在d 。差分模式的環境,你會使用適當的郵件設置

編輯

我想這是糟糕的決定,但 如果你想通過兩個郵件服務發送相同的郵件,你可以重新定義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 Man drillUserMailer.created.deliver

+0

我已經這樣做了,但讓我再解釋一次。在'staging','production'和'development'中,我想同時使用'Mailgun'和'Sendgrid'並使用它們。 send_order(帶有mailgun)和send_ticket(帶有sendgrid)。 – Fi3n1k

+0

編輯,看看 –

+0

Sobchuk如何創建兩個郵件並重新定義設置?謝謝 – Fi3n1k