Comment prévisualiser les e-mails dans Rails?

Cela peut être une question idiote, mais quand je rassemble un email HTML dans Rails, existe-t-il un moyen particulièrement simple de prévisualiser le modèle dans le navigateur ou dois-je écrire un type de contrôleur personnalisé? à sa vue?

Action Mailer a maintenant un moyen intégré de prévisualiser les emails dans Rails 4.1 . Par exemple, vérifiez ceci:

# located in test/mailers/previews/notifier_mailer_preview.rb class NotifierPreview < ActionMailer::Preview # Accessible from http://localhost:3000/rails/mailers/notifier/welcome def welcome Notifier.welcome(User.first) end end 

La réponse de Daniel est un bon début, mais si vos modèles de courrier électronique contiennent des données dynamics, cela ne fonctionnera pas. Par exemple, supposons que votre email soit un reçu de commande et que vous @order.total_price à l’ @order.total_price – en utilisant la méthode précédente, la variable @order sera nulle.

Voici une petite recette que j’utilise:

Premièrement, comme cette fonctionnalité de prévisualisation d’e-mails est uniquement destinée à un usage interne, j’ai défini des routes génériques dans l’espace de noms de l’administrateur:

 #routes.rb MySite::Application.routes.draw do namespace :admin do match 'mailer(/:action(/:id(.:format)))' => 'mailer#:action' end end 

Ensuite, je crée le contrôleur. Dans ce contrôleur, je crée une méthode par modèle de courrier électronique. Comme la plupart des e-mails contiennent des données dynamics, nous devons renseigner les variables membres auxquelles le modèle s’attend.

Cela pourrait être fait avec des appareils, mais je préfère généralement saisir des données réelles pseudo-aléatoires. Rappelez-vous – ceci n’est PAS un test unitaire – c’est purement une aide au développement. Il n’est pas nécessaire de produire le même résultat à chaque fois – en fait, c’est probablement mieux si ce n’est pas le cas!

 #app/controllers/admin/mailer_controller.rb class Admin::MailerController < Admin::ApplicationController def preview_welcome() @user = User.last render :file => 'mailer/welcome.html.erb', :layout => 'mailer' end end 

Notez que lorsque nous rendons le modèle, nous utilisons layout=>:mailer . Cela incorpore le corps de votre courrier électronique dans la mise en page HTML que vous avez créée au lieu de la disposition typique de votre application Web (par exemple, application.html.erb ).

Et c’est à peu près tout. Maintenant, je peux visiter http://example.com/admin/mailer/preview_welcome pour prévisualiser les modifications apscopes à mon modèle de courrier électronique de bienvenue.

37Signals possède également son propre joyau de test de messagerie appelé mail_view . C’est assez fantastique.

La configuration la plus simple que j’ai vue est MailCatcher . L’installation a pris 2 minutes, et cela fonctionne pour les nouveaux expéditeurs hors de la boîte.

J’utilise email_preview . Essaie.

J’ai récemment écrit un bijou nommé Maily pour prévisualiser, éditer (fichier modèle) et envoyer les emails de l’application via un navigateur. Il fournit également un moyen convivial d’accrocher des données, un système d’autorisation flexible et une interface utilisateur minimaliste.

J’ai prévu d’append de nouvelles fonctionnalités dans un avenir proche, comme:

  • Crochets multiples par email
  • Paramétrer les emails via l’interface utilisateur (arguments de la méthode mailer)
  • Jouer avec les clés de traductions (lister, surligner, …)

J’espère que cela peut vous aider.

Vous pouvez utiliser l’ aperçu d’email de Rails

capture d'écran rails-email-preview

REP est un moteur de rails permettant de prévisualiser et de tester les e-mails envoyés, avec le support I18n, l’intégration aisée du pré-logiciel et l’édition de CMS en option avec comfort_mexican_sofa.

Rails Email Preview nous permet d’afficher rapidement le courrier électronique dans un navigateur Web en mode de développement.

1) Ajouter “gem 'rails_email_preview', '~> 0.2.29' “ pour installer un fichier et un bundle.

2) Exécutez “rails g rails_email_preview:install” Cela crée un initialiseur dans le dossier de configuration et ajoute des routes.

3) Exécutez “rails g rails_email_preview:update_previews” ce dossier mailer_previews dans le répertoire app.

Generator appenda un stub à chacun de vos emails, puis remplira le stub avec des données factices.

Ex:

 class UserMailerPreview def invitation UserMailer.invitation mock_user('Alice'), mock_user('Bob') end def welcome UserMailer.welcome mock_user end private def mock_user(name = 'Bill Gates') fake_id User.new(name: name, email: “user#{rand 100}@test.com”) end def fake_id(obj) obj.define_singleton_method(:id) { 123 + rand(100) } obj end end 

4) Les parameters de la requête de recherche seront disponibles en tant que variable d’instance pour prévisualiser la classe. Ex: si nous avons une URL comme “/emails/user_mailer_preview-welcome?user_id=1” @user_id est défini dans la méthode de bienvenue de UserMailerPreview cela nous aide à envoyer du courrier à un utilisateur spécifique.

 class UserMailerPreview def welcome user = @user_id ? User.find(@user_id) : mock_user UserMailer.welcome(user) end end 

5) Pour accéder à url REP comme ceci

 rails_email_preview.rep_root_url rails_email_preview.rep_emails_url rails_email_preview.rep_email_url('user_mailer-welcome') 

6) Nous pouvons envoyer des e-mails via REP, cela utilisera les parameters d’éditeur d’environnement. Décommentez cette ligne dans l’initialiseur pour désactiver l’envoi du courrier dans l’environnement de test.

 config.enable_send_email = false 

Source: Blog RailsCarma: Prévisualiser les emails dans les applications Rails avec le Gem Mail_View

Il n’y a aucun moyen de prévisualiser directement à partir du Mailer. Mais comme vous l’avez écrit, vous pouvez écrire un contrôleur qui ressemble à ceci.

 class EmailPreviewsControllers < ActionController::Base def show render "#{params[:mailer]}_mailer/#{params[:method]}" end end 

Mais je pense que ce n'est pas la meilleure façon de tester les e-mails, s'ils ont l'air correct.

Je préfère les mails_viewer gem. Ce bijou est très utile car il enregistre le modèle HTML dans le dossier tmp.

Je suis surpris que personne ne soit mentionné letter_opener . C’est un bijou qui rendra et ouvrira les emails sous forme de page de navigateur chaque fois qu’un email est délivré en dev.

rails génère un aperçu du courrier si vous utilisez rails g mailer CustomMailer . Vous obtiendrez un fichier CustomMailerPreview dans le dossier spec/mailers/previews .

Vous pouvez écrire ici votre méthode qui appellera le mailer et générera un aperçu.

Pour ex –

 class CustomMailerPreview < ActionMailer::Preview def contact_us_mail_preview CustomMailer.my_mail(user: User.first) end end 

Prévisualiser tous les e-mails à l' adresse http: // localhost: 3000 / rails / mailers / custom_mailer