Esta puede ser una pregunta tonta, pero cuando estoy armando un correo electrónico HTML en Rails, ¿hay una forma incorporada particularmente fácil de obtener una vista previa de la plantilla en el navegador o necesito escribir algún tipo de controlador personalizado que lo extraiga? en como su vista?
ruby-on-rails
email
Peter Nixey
fuente
fuente
Respuestas:
Action Mailer ahora tiene una forma integrada de obtener una vista previa de los correos electrónicos en Rails 4.1 . Por ejemplo, mira esto:
fuente
spec/mailers/previews
La respuesta de Daniel es un buen comienzo, pero si sus plantillas de correo electrónico contienen datos dinámicos, no funcionará. Por ejemplo, suponga que su correo electrónico es un recibo de pedido y dentro de él lo imprime
@order.total_price
; utilizando el método anterior, la@order
variable será nula.Aquí hay una pequeña receta que utilizo:
Primero, dado que esta funcionalidad de vista previa de correo electrónico es definitivamente solo para uso interno, configuré algunas rutas genéricas en el espacio de nombres de administrador:
A continuación, creo el controlador. En este controlador, creo un método por plantilla de correo electrónico. Dado que la mayoría de los correos electrónicos contienen datos dinámicos, necesitamos completar cualquier variable miembro que espere la plantilla.
Esto se podría hacer con accesorios, pero normalmente prefiero capturar algunos datos reales pseudoaleatorios. Recuerde, esta NO es una prueba unitaria, es puramente una ayuda al desarrollo. No es necesario que produzca el mismo resultado todas las veces; de hecho, ¡probablemente sea mejor si no lo hace!
Tenga en cuenta que cuando renderizamos la plantilla, usamos
layout=>:mailer
. Esto incrusta el cuerpo de su correo electrónico dentro del diseño de correo electrónico HTML que ha creado en lugar de dentro de su diseño de aplicación web típico (por ejemploapplication.html.erb
).Y eso es todo. Ahora puedo visitar http://example.com/admin/mailer/preview_welcome para obtener una vista previa del cambio en mi plantilla de correo electrónico de bienvenida.
fuente
get 'mailer...
ahora en lugar dematch
.37Signals también tiene su propia gema de prueba de correo llamada mail_view . Es bastante fantástico.
fuente
La configuración más sencilla que he visto es MailCatcher . La instalación tardó 2 minutos y funciona para nuevos correos electrónicos listos para usar.
fuente
Yo uso email_preview . Darle una oportunidad.
fuente
Recientemente escribí una joya llamada Maily para obtener una vista previa, editar (archivo de plantilla) y enviar los correos electrónicos de la aplicación a través de un navegador. También proporciona una forma sencilla de conectar datos, un sistema de autorización flexible y una interfaz de usuario minimalista.
Tengo planeado agregar nuevas funciones en un futuro cercano, como:
Espero que te pueda ayudar.
fuente
Puede utilizar la vista previa de correo electrónico de Rails
REP es un motor de rieles para obtener una vista previa y probar el envío de correos electrónicos, con soporte I18n, fácil integración del premailer y edición opcional de CMS con comfortable_mexican_sofa .
fuente
rails
genera una vista previa de correo si usarails g mailer CustomMailer
. Obtendrás un archivoCustomMailerPreview
dentrospec/mailers/previews
carpeta.Aquí puede escribir su método que llamará al correo y generará una vista previa.
Por ex -
Obtenga una vista previa de todos los correos electrónicos en http: // localhost: 3000 / rails / mailers / custom_mailer
fuente
config.action_mailer.preview_path = "#{Rails.root}/spec/mailers/previews"
Rails Email Preview nos ayuda a ver rápidamente el correo electrónico en el navegador web en modo de desarrollo.
1) Agregue
“gem ‘rails_email_preview’, ‘~> 0.2.29’ “
al archivo de gemas y agrupe la instalación.2) Ejecute
“rails g rails_email_preview:install”
esto crea un inicializador en la carpeta de configuración y agregue rutas.3) Ejecute
“rails g rails_email_preview:update_previews”
esta carpeta crates mailer_previews en el directorio de la aplicación.Generator agregará un código auxiliar a cada uno de sus correos electrónicos y luego completará el código auxiliar con datos simulados.
Ex:
4) Los parámetros en la consulta de búsqueda estarán disponibles como una variable de instancia para obtener una vista previa de la clase. Ej: si tenemos una URL como
“/emails/user_mailer_preview-welcome?user_id=1”
@user_id
se define en el método de bienvenidaUserMailerPreview
, nos ayuda a enviar correo a un usuario específico.5) Para acceder a las URL de REP como esta
6) Podemos enviar correos electrónicos a través de REP, esto utilizará la configuración de correo del entorno. Elimine el comentario de esta línea en el inicializador para deshabilitar el envío de correo en el entorno de prueba.
Fuente: Blog de RailsCarma : Vista previa de correos electrónicos en aplicaciones de Rails con la gema Mail_View
fuente
Me sorprende que nadie haya mencionado letter_opener . Es una joya que procesará y abrirá correos electrónicos como una página de navegador cada vez que se entregue un correo electrónico en dev.
fuente
No hay forma de obtener una vista previa directamente desde el Mailer. Pero como escribiste, puedes escribir un controlador, que se parece a esto.
Pero creo que esa no es la mejor manera de probar los correos electrónicos, si se ven correctamente.
fuente
render "#{params[:mailer]}_mailer/#{params[:method]}", :layout => 'mailer'
incrustará el cuerpo del correo electrónico dentro del diseño de correo electrónico HTML que ha creado para su aplicación.Prefiero la gema mails_viewer . Esta joya es bastante útil ya que guarda la plantilla HTML en la carpeta tmp.
fuente