2010-11-23 11 views
2

Ich beginne eine neue Rails 3 App von Grund auf neu.Was ist der Best Practices-Ansatz zum Einrichten benutzerdefinierter globaler E-Mail-Standardeinstellungen in Rails?

Und als ich durch grundlegende Einrichtung ging (Konfigurieren von Edelsteinen, Sitzungen, usw.) stieß ich auf etwas, das mich für eine Weile gequält hat.

Unser aktuelles System (eine Mischung aus Ruby-Skripten & Rails 2 App) senden verschiedene E-Mail/Fax-Benachrichtigungen an Clients. Es gibt bestimmte Dinge, die in 80% der Fälle üblich sind - cc - bestimmte E-Mail-Konten auf unserer End- und E-Mail-Signatur.

Zuvor ich gerade definiert GLOBALS in der environment.rb wie

SYSTEM_EMAIL_SIGNATURE 

oder

SYSTEM_EMAIL_NOTIFY 

und benutzte sie später in Mailer oder ob es ein eigenständiges Skript war, hatte ich ein Setup .rb-Datei - das hatte eine Reihe von allgemeinen Einstellungen - einschließlich einer hat mit benutzerdefinierten E-Mail-Einstellungen wie folgt.

Da ich diese App von Grund auf neu aufbaue und alle Skripte in einer Ruby-App konsolidiere, habe ich versucht, mir einen besseren Weg zu überlegen.

Im Moment bin ich Einstellung einen email.rb Initializer bis den action_mailer Einstellungen hat, dass ich durch Zugabe von ein paar weiteren Elemente erweitert:

 ########## Setup Global Email Defaults ############## 
Site::Application.configure do 
    config.action_mailer.raise_delivery_errors = true 
    config.action_mailer.delivery_method = :smtp 
    config.action_mailer.smtp_settings = { 
    :address => 'mail.example.com', 
    :port => 25, 
    :domain => 'example.com', 
    # These are custom to OUR setup - used later in the code 
    :default_from => '[email protected]', 
    :default_notify => ["[email protected]"], 
    :default_signature => " 
--------------------------- 
This is an automatic email. 
If you have any questions please contact customer service 
at 1 (800) 888-0000 or go to http://www.example.com. 
Thank you for your business!" 

    } 



end 

dies ein guter Ansatz ist also? Oder gibt es einen besseren Weg als diese beiden Ansätze?

Antwort

2

Ich denke, Sie sind auf dem richtigen Weg für default_from und default_notify. Ich würde SMTP-Einstellungen dafür nicht verwenden; Das sind keine SMTP-Einstellungen, sondern allgemeine Mailer-Einstellungen.

ich mit so etwas wie dies in einem initializer gehen würde:

MAILER_SETTINGS = YAML::load(open(File.join(Rails.root, "config", "mailer.yml")).read)[Rails.env] 

Mit einer YAML-Datei, die wie folgt aussieht:

development: &development 
    default_from: [email protected] 
    default_notify: ["[email protected]"] 

production: 
    <<: *development 
    default_from: [email protected] 

Dass Sie Standardwerte festlegen können, kaskadieren sie dann nach unten und Override pro Umgebung wie gewünscht.

Allerdings würde ich für die Unterschrift nur in eine partielle verschieben, die Sie dann in Ihre Mail-Vorlagen aufnehmen. Sie sind Ansichten wie jede andere und können Layouts, Partials und all das haben.

+0

Danke für den Zeiger! – konung