2012-01-06 47 views
1

無論如何,我可以在同一個Rails 3應用程序中使用多個電子郵件提供程序?Rails - 在單個應用程序中使用多個電子郵件提供程序

語境 1.進出口使用郵戳爲目前發出的郵件(使用延遲工作) 2.我們的應用程序還需要發送一些大量電子郵件 - 對此,我們將使用一個單獨的供應商。

現在我不想分離出來併爲羣發電子郵件部分創建一個新應用程序。如何在發送電子郵件時使用/選擇不同的電子郵件提供商?

在此先感謝

+0

http://guides.rubyonrails.org/action_mailer_basics.html – Msencenb 2012-01-06 06:58:15

+0

@Minnb描述了ActionMailer,但它不超出配置全局SMTP設置。有沒有我錯過的指南的特定部分? – Nick 2012-01-06 07:07:30

回答

0

你有一個羣發郵件列表,您需要從[email protected]

送出去再說[email protected]和其他一些電子郵件的其他用途,您需要做的這些步驟,如果我得到該題正確::

  1. default :from取出default,如果你寫它。

  2. mass-email創建行動郵件並提出了:from => "[email protected]"

    1. 轉到您的environment.rb文件,並填寫了詳細資料,如該

    config.action_mailer.smtp_settings = {

    :address => "smtp.gmail.com",

    :port => 587,

    :domain => 'yourdomain.com',

    :user_name => '[email protected]',

    :password => 'yourpassword',

    :authentication => 'plain',

    :enable_starttls_auto => true }

可以創建一個FO你想要的文件數量很多。

希望它有幫助。

5

您可以在每個郵件的基礎覆蓋的ActionMailer設置,例如

class BulkMailer < ActionMailer::Base 
    self.smtp_settings = {...} 
end 

會導致BulkMailer及其子類來使用這些設置。

有一點需要注意的是不要改變smtp_settings的位置,即不要這樣做self.smtp_settings[:user_name] = 'blah',因爲這將作用於共享設置,而不是創建新設置專用於BulkMailer

1

我用我的應用程序的郵件服務器回退,因此,當一個郵件服務器關閉它切換郵件服務器。您的問題是類似的,除非您不需要別名舊Mail::Message.deliver並使用Mail::Message.mass_deliver例如。

這是你如何做到這一點:

Mail::Message.class_eval do 
    def mass_deliver 
    self.delivery_method.settings = { 
             :address => "smtp.massdeliverserver.com", 
             :port => 587, 
             :domain => 'yourdomain.com', 
             :user_name => '[email protected]', 
             :password => 'yourpassword', 
             :authentication => 'plain', 
             :enable_starttls_auto => true 
            } 
    deliver 
    end 
end 

那麼你可以使用YourMailer.your_method.deliver使用defalt你environment.rb提供設置config.action_mailer.smtp_settingsYourMailer.your_method.mass_deliver使用其他的服務器設置。

將代碼放在config/initializersmass_deliver中的某個文件中,該方法將適用於您的應用程序中的任何Mail::Message實例。

相關問題