2012-08-17 13 views
9

Necesito usar un programa de correo para enviar correos electrónicos a los usuarios para configurar sus contraseñas a la función "recuperable" de Devise y administración activa. En el entorno de desarrollo que he hecho esto añadiendo lo siguiente para estos archivos:Cómo configurar un programa de correo en la aplicación Rails para entorno de producción en Heroku

config/ambientes/desarrollo

#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' 
} 

¿Cómo consigo la misma funcionalidad para el entorno de producción? Quiero implementar mi aplicación en Heroku. ¿Qué archivos y código necesitaría agregar?

+1

Necesita el mismo código en config/environments/production.rb – house9

+0

O póngalo en config/application.rb si es el mismo para todos sus entornos – house9

+0

Sí, pero ¿qué debo poner para esto en producción: config.action_mailer. default_url_options = {: host => '????' } – banditKing

Respuesta

3

Si funciona en modo de desarrollo, entonces funcionará en modo de producción.

Supongamos que todo está configurado correctamente, restablecer una contraseña en desarrollo ya enviará un correo electrónico real con su cuenta de Gmail.

El dispositivo solo se basa en la configuración de la aplicación de correo electrónico correctamente (lo que ha hecho), y la configuración para permitir el restablecimiento de contraseña y posiblemente otra configuración para el campo De del correo electrónico.

+2

Sí, pero ¿qué debo poner para esto en producción: config.action_mailer.default_url_options = {: host => '????' } – banditKing

7

Todas las configuraciones que haya configurado en el modo de desarrollo funcionarán, EXCEPTO, tendrá que volver a configurar la url predeterminada del remitente.

So.

  1. Copie y pegue la configuración de development.rb.

  2. punto predeterminado anuncio publicitario para su aplicación heroku:

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

Además, tenga cuidado de cualquier límite de correo electrónico SMTP puede tener a la hora de pasar a la producción. Por ejemplo, es difícil activar los límites smtp de Gmail mientras se desarrolla, pero podrían desencadenarse más fácilmente en la producción.

2

¡Esto debería funcionar bien!

Siempre que config/environments/production.rb tenga lo mismo con una excepción. La opción default_url_options debería tener un: valor de host de 'localhost' solo en desarrollo y 'YOURAPPNAME.herokuapp.com' en producción heroku.

decir

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

Recuerde desbloquear código de imagen en Gmail, de lo contrario no va a enviar correo electrónico desde heroku (fuente desconocida). Usted puede hacer que al ir a este enlace: http://www.google.com/accounts/DisplayUnlockCaptcha

Así como una sugerencia, yo diría que mover esto desde environments.rb

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

y el lugar está en entornos/development.rb como

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

No es necesario en producción.

Consulte Net::SMTPAuthenticationError when sending email from Rails app (on staging environment) para obtener más información con respecto a gmail viendo a heroku como un host desconocido.

Cuestiones relacionadas