2012-07-04 4 views
8

Ho configurato un server di posta compatibile con Exchange in un'applicazione RoR. Ho usato la seguente configurazione in development.rb:Qual è la differenza tra config.action_mailer.smtp_settings e ActionMailer :: Base.smtp_settings in Rails?

config.action_mailer.smtp_settings = { 
    :address    => 'mail.server.com', 
    :port     => 5870, 
    :user_name   => 'username', 
    :password    => 'password', 
    :authentication  => :login 
} 

Questa impostazione non funziona, ottengo Net::SMTPAuthenticationError: 504 Unrecognized authentication type.

Tuttavia, se applico la stessa configurazione esatta in environment.rb, funziona perfettamente:

ActionMailer::Base.smtp_settings = { 
    :address    => 'mail.server.com', 
    :port     => 5870, 
    :user_name   => 'username', 
    :password    => 'password', 
    :authentication  => :login 
} 

Perchè è questo? Non dovrebbe config.action_mailer.smtp_settings impostare le stesse impostazioni? è un insetto? Ha una ragione?

ho provato con Gmail come told here, e funziona, così smtp_settings ha effetto sul mailer, ma sembra a me come non tutte le opzioni contano/lavoro.

risposta

4

config.action_mailer.smtp_settings inoltra le impostazioni a ActionMailer::Base.smtp_settings.

Tuttavia, la differenza principale è che il primo è un'impostazione specifica dell'ambiente mentre il secondo è un'impostazione globale.

In altre parole, è necessario assicurarsi di impostare config.action_mailer.smtp_settings nel file di ambiente appropriato per applicare le impostazioni. Se si desidera utilizzare le impostazioni in produzione, ad esempio, aggiungere l'assegnazione nel file config/environments/production.rb. Allo stesso modo, se si desidera applicare le impostazioni all'intero progetto, impostarle su config/application.rb.

+1

Ho impostato la configurazione per la modalità di sviluppo in 'development.rb' ma non ha inoltrato le impostazioni. I due sembrano non essere gli stessi - questo è ciò di cui si tratta la mia domanda. Vuoi dire che questo è un bug? – andrasf

2

Ho avuto un problema simile, il config.action_mailer.smtp_settings non funzionava, ma ogni configurazione era corretta.

Infine ho capito, che l'estensione Rails sostituisce le impostazioni ActionMailer :: Base nella fase di inizializzazione ... Quindi indagare tutto il codice e tutti i codici 3rd party (!), Estensioni, moduli, ecc ci dovrebbe essere il problema!

+0

Che estensione stava sovrascrivendolo? Sto avendo un problema simile. – Andrew