2010-06-16 13 views

Respuesta

6

poner esto en su archivo environment.rb

config.action_mailer.delivery_method = :test 

Se debe dejar de enviar el correo al servidor de correo, creo que hay una: la opción de registro, pero no lo he probado.

+8

Sin embargo, probablemente lo desee en un archivo 'environments/staging.rb' separado, y no en el archivo global' environment.rb'. –

16

Esta línea de test.rb dice ActionMailer no entregar mensajes de correo electrónico:

config.action_mailer.delivery_method = :test 

En su lugar, se acumulan en la matriz ActionMailer :: Base.deliveries.

Tendrá que configurar un entorno de ensayo para su aplicación y configurar Heroku para usar ese entorno en su instancia de ensayo.

11

Las aplicaciones que usan la gema Mail (incluidos los rieles> = 3.0 proyectos) pueden usar la gema safety_mailer. Especifique un dominio (o un conjunto de dominios, o una palabra mágica en la dirección de correo electrónico) al que pueda acceder el correo electrónico, y el correo electrónico a todos los demás dominios se descarta silenciosamente.

https://github.com/cluesque/safety_mailer

Añadir la gema a su Gemfile, especificando los grupos (probablemente no producción) para incluirlo en.

gem "safety_mailer", :group => :development 

No se olvide de bundle install instalar

En su entorno archivo config/environments/development.rb configurarlo, y algunas expresiones regulares.

config.action_mailer.delivery_method = :safety_mailer 
config.action_mailer.safety_mailer_settings = { 
    allowed_matchers: [ /mydomain.com/, /[email protected]/, /super_secret_test/ ], 
    delivery_method: :smtp, 
    delivery_method_settings: { 
    :address => "smtp.mydomain.com", 
    :port => 25, 
    :domain => "mydomain.com", 
    :authentication => :plain, 
    :user_name => "[email protected]", 
    :password => "password" 
    } 
} 

... y ahora, el correo electrónico a [email protected], [email protected], [email protected] todos son enviadas y correo electrónico a otros destinatarios (como los usuarios reales en el la base de datos de producción que copió a un servidor de prueba) está suprimida.

8

Te puede interesar mailtrap.io (, descargo de responsabilidad: Estoy afiliado a este producto). Es una herramienta perfecta para probar entregas de correo electrónico en desarrollo y producción. Todo lo que tiene que hacer es configurar mailtrap.io como un servidor SMTP en el entorno de ensayo config:

config.action_mailer.smtp_settings = { 
    :address => "mailtrap.io", 
    :port => 2525, 
    :authentication => :plain, 
    :user_name => "LOGIN", 
    :password => "PASSWORD" 
    } 

teniendo esta prueba todos sus correos electrónicos enviados en env puesta en escena se almacenarán en mailtrap de vista y compartir. Pero ninguno de ellos será enviado a las direcciones reales. Puedes usarlo en desarrollo también. Y por cierto, ¡es totalmente gratis!

+1

¡Absolutamente práctico! Funciona maravillosamente –

3

Veo que la gente sugiere usar Mailtrap.io. La buena alternativa es Debug Mail. Usar es bastante simple.

+0

El correo de depuración se ve como un buen servicio funcionalmente, pero desde una perspectiva de seguridad advertiría a los desarrolladores que no envíen el almacenamiento provisional a un tercero relativamente desconocido como este. – Kelseydh

0

Utilizamos maildev, que puede instalar localmente. Ideal para entornos de desarrollo y puesta en escena, fácil de instalar en una variedad de pilas tecnológicas.

0

Dependiendo de sus opciones

  • Si quieres una manera conveniente de recibir mensajes de correo electrónico para la depuración, etc. Recomiendo https://github.com/fgrehm/letter_opener_web, lo que permitirá ahorrar correos electrónicos a nivel local, y proporcionar una URL para navegar por los correos electrónicos que se enviaron. Sin correo electrónico se envía fuera, y puede muy bien ver la salida en su navegador

  • Si usted quiere ser capaz de abrir archivos de correo electrónico con sus clientes de correo electrónico, usted debe elegir un adaptador :file para ActionMailer (configurar en config/environments/your_env.rb)

  • Si desea un entorno real similar a la producción, le sugiero que configure un interceptor de correo electrónico que reescriba el TO/CC/BCC en un buzón real de su elección, de esta manera puede conservar y probar su original Adaptador de ActionMailer

    if Rails.env.staging? 
        class TestEmailsInterceptor 
        def self.delivering_email(mail) 
         mail.to = ['My Test Box <[email protected]>'] 
         # remove bcc, cc, etc. 
        end 
        end 
        ActionMailer::Base.register_interceptor(TestEmailsInterceptor) 
    end 
    
Cuestiones relacionadas