2012-01-06 6 views
1

とにかく、同じRails 3アプリケーション内で複数の電子メールプロバイダを使用できますか?Rails - 単一のアプリケーションで複数の電子メールプロバイダを使用する

状況1.現在、メールを送信するために消印を使用しています(遅れているジョブを使用) 2.私たちのアプリはまた、別のプロバイダを使用するいくつかの大量メールを送信する必要があります。

今は大量メール送信用の新しいアプリを別にして作成したくありません。メールを送信する時点で、別のメールプロバイダを使用/選択するにはどうすればよいですか?あなたは私が取得しています場合は、これらの手順を実行する必要がありますが、[email protected]言うから送信する必要があるために大量の電子メールリストと[email protected]

から他の目的のために他のいくつかの電子メールを持って事前

+0

http://guides.rubyonrails.org/action_mailer_basics.html – Msencenb

+0

@MsencenbこれはActionMailerを説明していますが、グローバルSMTP設定の構成を超えていません。私が逃したガイドの特定の部分はありましたか? – Nick

答えて

0

感謝質問正しい::

  1. あなたはそれを書かれている場合default :fromからdefaultを削除します。

  2. mass-emailのアクションメーラーを作成し、environment.rbファイルに:from => "[email protected]"

    1. 移動を設置し、この

    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

あなたはこれらの設定を使用するようにBulkMailerとそのサブクラスの原因となります例

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

ため、メーラーごとにactionmailerの設定を上書きすることができます。

注意しなければならないことの1つは、変更することではありません。smtp_settingsこれは共有設定に作用するのではなくBulkMailer

1

にプライベート新しい設定を作成されるようは、1つのメールサーバーがダウンしているときに、それはメールサーバを切り替え、私は自分のアプリケーションでメールサーバのフォールバックを使用していself.smtp_settings[:user_name] = 'blah'ような何かを行うません。古い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 

次にあなたが他のサーバーの設定を使用して、あなたがconfig.action_mailer.smtp_settingsためenvironment.rbYourMailer.your_method.mass_deliverで提供defalt設定を使用するYourMailer.your_method.deliverを使用することができます。

config/initializersmass_deliverのファイル内にコードを挿入すると、アプリケーションのMail::Messageインスタンスで利用できるようになります。

関連する問題