2012-02-15 8 views
6

Estoy trabajando en correos electrónicos para mi aplicación de rieles. En este momento, la única manera que conozco para ver el correo electrónico es enviármelo. ¿Cómo obtengo "daily_summary.html.haml", que se encuentra en la carpeta "notificaciones" en la carpeta "vistas", para procesar en el navegador? Estaba pensando yo debería añadir la ruta:Cómo ver las vistas de correo electrónico en el navegador utilizando los rieles

match 'notifications' => 'notifications/daily_summary' 

Pero entonces yo no sé cómo manejar el lado del controlador/acción de las cosas.

+1

posible duplicado de [¿Cómo puedo obtener una vista previa de los correos electrónicos en Rails?] (Http://stackoverflow.com/questions/7165064/how-do-i-preview-emails-in-rails) –

Respuesta

1

Echaré un vistazo a actionmailer_extensions. Hace que ActionMailer escriba correos electrónicos salientes en el disco como archivos .eml. Esto podría ser suficiente para sus propósitos (simplemente configure un script para ver el directorio de salida para nuevos archivos y ábralos en su cliente de correo electrónico preferido), o podría bifurcar la gema y modificarla directamente (su fuente es muy simple) para escribir .html archivos y ábralos en su navegador en su lugar.

Espero que ayude!

8

Hay una gema llamada Letter Opener que parece que hará exactamente lo que estás buscando. Muestra mensajes de correo electrónico en el navegador en lugar de enviarlos. No lo he usado yo mismo. ¡Si funciona, me encantaría escuchar sobre eso!

https://github.com/ryanb/letter_opener

Hay otra que se llama Visor de correo pero no se ha desarrollado de forma activa en bastante tiempo. Probablemente es mejor mantenerse al margen:

https://github.com/37signals/mail_view

+0

Letter Opener parece estar funcionando . Lo único es que está abriendo las versiones 'plain.html' del correo electrónico en lugar de las versiones 'rich.html' (el plano parece corresponder a la versión de texto de mi correo electrónico y la versión enriquecida a html). ¿Alguna idea de cómo podría cambiar esto? – John

+0

Parece que dentro del bloque 'entregar' puede especificar tanto un bloque' text_part' como un bloque 'html_part'. Y debe establecer 'content_type' en' 'text/html'' en el bloque html_part. Ve si eso funciona. –

+0

Soy un poco ignorante aquí. . ¿dónde ves estos bloques y dónde puedo configurar content_type? – John

10

Desde Rails 4.1, e-mail vista previa es nativo. Todo lo que necesita hacer es crear una clase en este directorio:

test/mailers/previews/ 

La clase debe extenderse métodos ActionMailer::Preview

class WeeklyReportPreview < ActionMailer::Preview 
    def weekly_report 
     WeeklyReport.weekly_report(User.first) 
    end 
end 

de escritura que devuelven Mail::Message objetos. Son accesibles en el entorno de desarrollo utilizando esta URL:

http://localhost:3000/rails/mailers/[preview_class_name]/[method_name] 

En mi caso:

http://localhost:3000/rails/mailers/weekly_report/weekly_report 

Más información se puede encontrar en el ActionMailer API documentation

+0

Para cualquier persona que termine aquí, tengo un seguimiento lateral por el hecho de que muchas referencias de creación de vistas previas en pruebas/anuncios publicitarios etc. Sin embargo, si tiene pruebas en especificación es realmente especificaciones/anuncios ... de lo contrario funciona un placer! – Ben

1

para los carriles 3 ahora hay una joya, mail_view, que se incluyó en Rails 4.1. Aquí hay un enlace al set-up. Es bastante fácil.

1.) Añadir a Gemfile:

gem 'mail_view', :git => https://github.com/basecamp/mail_view.git' 
# or 
gem "mail_view", "~> 2.0.4" 

2.) en routes.rb:

# config/routes.rb 
if Rails.env.development? 
    mount MailPreview => 'mail_view' 
end 

3.) Crear un modelo MailPreview:

# app/mailers/mail_preview.rb or lib/mail_preview.rb 
class MailPreview < MailView 
... 
def forgot_password 
    user = Struct.new(:email, :name).new('[email protected]', 'Jill Smith') 
    mail = UserMailer.forgot_password(user) 
end 
end 

En este modelo puede nombrar los métodos como lo desee, pero tiene sentido que correspondan a los métodos de UserMailer.

4.) Para ver vaya a /mail_view para obtener una lista de todos los métodos en MailPreview. Haga clic en uno para ver la vista previa HTML allí mismo en el navegador.

Cuestiones relacionadas