Dies mag eine dumme Frage sein, aber wenn ich eine HTML-E-Mail in Rails zusammenstelle, gibt es eine besonders einfache integrierte Möglichkeit, eine Vorschau der Vorlage im Browser anzuzeigen, oder muss ich eine Art benutzerdefinierten Controller schreiben, der sie abruft in wie seine Ansicht?
ruby-on-rails
email
Peter Nixey
quelle
quelle
Antworten:
Action Mailer verfügt jetzt über eine integrierte Vorschau von E-Mails in Rails 4.1 . Überprüfen Sie dies zum Beispiel:
quelle
spec/mailers/previews
Daniels Antwort ist ein guter Anfang, aber wenn Ihre E-Mail-Vorlagen dynamische Daten enthalten, funktioniert dies nicht. Angenommen, Ihre E-Mail ist eine Bestellbestätigung und Sie drucken sie aus.
@order.total_price
Mit der vorherigen Methode ist die@order
Variable Null.Hier ist ein kleines Rezept, das ich benutze:
Da diese E-Mail-Vorschau-Funktion definitiv nur für den internen Gebrauch bestimmt ist, habe ich zunächst einige generische Routen im Admin-Namespace eingerichtet:
Als nächstes erstelle ich den Controller. In diesem Controller erstelle ich eine Methode pro E-Mail-Vorlage. Da die meisten E-Mails dynamische Daten enthalten, müssen alle von der Vorlage erwarteten Mitgliedsvariablen ausgefüllt werden.
Dies könnte mit Fixtures gemacht werden, aber ich ziehe es normalerweise vor, nur einige pseudozufällige reale Daten zu erfassen. Denken Sie daran - dies ist KEIN Komponententest - dies ist lediglich eine Entwicklungshilfe. Es muss nicht jedes Mal das gleiche Ergebnis erzielen - tatsächlich ist es wahrscheinlich besser, wenn dies nicht der Fall ist!
Beachten Sie, dass wir beim Rendern der Vorlage verwenden
layout=>:mailer
. Dadurch wird der Text Ihrer E-Mail in das von Ihnen erstellte HTML-E-Mail-Layout eingebettet, anstatt in Ihr typisches Webanwendungslayout (zapplication.html.erb
. B. ).Und das war's auch schon. Jetzt kann ich http://example.com/admin/mailer/preview_welcome besuchen, um eine Vorschau der Änderung meiner Begrüßungs-E-Mail-Vorlage anzuzeigen.
quelle
get 'mailer...
jetzt statt seinmatch
.37Signals hat auch ein eigenes Mail-Test-Juwel namens mail_view . Es ist ziemlich fantastisch.
quelle
Das einfachste Setup, das ich gesehen habe, ist MailCatcher . Die Einrichtung dauerte 2 Minuten und funktioniert sofort für neue Mailer.
quelle
Ich benutze email_preview . Versuche es.
quelle
Ich habe kürzlich ein Juwel namens Maily geschrieben , um die Anwendungs-E-Mails in der Vorschau anzuzeigen , zu bearbeiten (Vorlagendatei) und über einen Browser zuzustellen. Es bietet auch eine benutzerfreundliche Möglichkeit, Daten zu verknüpfen, ein flexibles Autorisierungssystem und eine minimalistische Benutzeroberfläche.
Ich habe geplant, in naher Zukunft neue Funktionen hinzuzufügen, wie zum Beispiel:
Ich hoffe es kann dir helfen.
quelle
Sie können die E-Mail-Vorschau von Rails verwenden
REP ist eine Rails-Engine zum Anzeigen und Testen des Sendens von E-Mails mit I18n-Unterstützung, einfacher Premailer-Integration und optionaler CMS-Bearbeitung mit komfortabler_mexican_sofa .
quelle
rails
generiert eine E-Mail-Vorschau, wenn Sie verwendenrails g mailer CustomMailer
. Sie erhalten eine DateiCustomMailerPreview
imspec/mailers/previews
Ordner.Hier können Sie Ihre Methode schreiben, die den Mailer aufruft und eine Vorschau generiert.
Zum Beispiel -
Vorschau aller E-Mails unter http: // localhost: 3000 / Rails / Mailers / Custom_mailer
quelle
config.action_mailer.preview_path = "#{Rails.root}/spec/mailers/previews"
Mit der E-Mail-Vorschau von Rails können wir die E-Mail im Entwicklungsmodus schnell im Webbrowser anzeigen.
1)
“gem ‘rails_email_preview’, ‘~> 0.2.29’ “
Zur Gem-Datei hinzufügen und Bundle installieren.2) Führen Sie
“rails g rails_email_preview:install”
dies aus, um den Initialisierer im Konfigurationsordner zu erstellen und Routen hinzuzufügen.3) Führen Sie
“rails g rails_email_preview:update_previews”
diesen Ordner mit den Kisten mailer_previews im App-Verzeichnis aus.Der Generator fügt jeder Ihrer E-Mails einen Stub hinzu, und dann füllen Sie den Stub mit Scheindaten.
Ex:
4) Parameter in der Suchabfrage stehen als Instanzvariable für die Vorschau der Klasse zur Verfügung. Beispiel: Wenn wir eine URL haben, wie
“/emails/user_mailer_preview-welcome?user_id=1”
@user_id
sie in der Begrüßungsmethode definiert ist, könnenUserMailerPreview
wir E-Mails an einen bestimmten Benutzer senden.5) Um auf solche REP-URLs zuzugreifen
6) Wir können E-Mails über REP senden. Dabei werden die Einstellungen des Umgebungsmailers verwendet. Kommentieren Sie diese Zeile im Initialisierer aus, um das Senden von E-Mails in der Testumgebung zu deaktivieren.
Quelle: RailsCarma Blog: Vorschau von E-Mails in Rails-Anwendungen mit dem Mail_View Gem
quelle
Ich bin überrascht, dass niemand letter_opener erwähnt hat . Es ist ein Juwel, das E-Mails als Browserseite rendert und öffnet, wenn eine E-Mail in dev zugestellt wird.
quelle
Es gibt keine Möglichkeit, eine Vorschau direkt aus dem Mailer heraus anzuzeigen. Aber wie Sie geschrieben haben, können Sie einen Controller schreiben, der ungefähr so aussieht.
Aber ich denke, das ist nicht der beste Weg, um E-Mails zu testen, wenn sie richtig aussehen.
quelle
render "#{params[:mailer]}_mailer/#{params[:method]}", :layout => 'mailer'
Der Text der E-Mail wird in das HTML-E-Mail-Layout eingebettet, das Sie für Ihre App erstellt haben.Ich bevorzuge mails_viewer gem. Dieses Juwel ist sehr nützlich, da es die HTML-Vorlage im tmp-Ordner speichert.
quelle