2012-08-17 10 views
9

Ho bisogno di utilizzare un mailer per inviare email agli utenti per impostare le loro password sulla funzione "recuperabile" di Devise e amministratore attivo. In materia di ambiente di sviluppo che ho fatto questo aggiungendo il seguente a questi file:Come impostare il mailer nell'app Rails per l'ambiente di produzione su Heroku

config/ambienti/sviluppo

#Added per active admin install instructions 
config.action_mailer.default_url_options = { :host => 'localhost:3000' } 


#These settings are for the sending out email for active admin and consequently the devise mailer 
ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.perform_deliveries = true 
ActionMailer::Base.raise_delivery_errors = true 
ActionMailer::Base.smtp_settings = 
{ 

    :address   => 'smtp.gmail.com', 
    :port    => 587, 
    :domain    => 'gmail.com', #you can also use google.com 
    :authentication  => :plain, 
    :user_name   => '[email protected]', 
    :password   => 'XXXXXXX' 
} 

Come faccio ad avere la stessa funzionalità per l'ambiente di produzione? Voglio distribuire la mia app su Heroku. Quali file e codice dovrei aggiungere?

+1

è necessario che lo stesso codice in config/ambienti/production.rb – house9

+0

o metterlo in config/application.rb se lo stesso per tutti i tuoi ambienti – house9

+0

Sì, ma cosa devo mettere per questo in produzione: config.action_mailer. default_url_options = {: host => '????' } – banditKing

risposta

3

Se funziona in modalità sviluppo, funzionerà in modalità produzione.

Supponendo che tutto sia impostato correttamente, reimpostare una password in fase di sviluppo invierà già un'e-mail effettiva utilizzando il proprio account Gmail.

Devace si basa solo sulla configurazione di configurazione del mailer correttamente (cosa che si è fatto) e sulla configurazione del dispositivo per consentire il ripristino della password e possibilmente un'altra impostazione per il campo Da dell'email.

+2

Sì, ma cosa dovrei inserire in produzione: config.action_mailer.default_url_options = {: host => '????' } – banditKing

7

Tutte le configurazioni impostate in modalità Sviluppo funzioneranno, TRANNE sarà necessario riconfigurare l'URL di posta elettronica predefinito.

Così.

  1. Copia-incolla le impostazioni da development.rb.

  2. Point predefinito mailer al Heroku app:

    config.action_mailer.default_url_options = { :host => 'YOURAPPNAME.herokuapp.com' } 
    

Inoltre, fate attenzione di eventuali limiti di posta elettronica SMTP può avere quando si spostano alla produzione. È difficile innescare i limiti di smtp di gmail durante lo sviluppo, ad esempio, ma potrebbero essere più facilmente attivati ​​in produzione.

2

Questo dovrebbe funzionare bene!

Finché config/environments/production.rb ha la stessa cosa con un'eccezione. L'opzione default_url_options dovrebbe avere un: valore host di 'localhost' solo in sviluppo e 'YOURAPPNAME.herokuapp.com' nella produzione di heroku.

cioè

config.action_mailer.default_url_options = { :host => 'YOURAPPNAME.herokuapp.com' } 

Ricordati di sbloccare captcha su Gmail, altrimenti non inviare email da Heroku (fonte sconosciuta). È possibile farlo andando a questo link: http://www.google.com/accounts/DisplayUnlockCaptcha

Proprio come un suggerimento, direi spostare questo da environments.rb

ActionMailer::Base.perform_deliveries = true 
ActionMailer::Base.raise_delivery_errors = true 

e il luogo è in ambienti/development.rb come

config.action_mailer.perform_deliveries = true 
config.action_mailer.raise_delivery_errors = true 

Non è necessario in produzione.

Vedere Net::SMTPAuthenticationError when sending email from Rails app (on staging environment) per ulteriori informazioni in merito a gmail che vede heroku come host sconosciuto.

Problemi correlati