Wie konfiguriere ich Rails, um das Senden von echten E-Mails während der Bereitstellung zu deaktivieren?

8

Ich bin auf Heroku, und E-Mails werden nicht in der Entwicklung gesendet, sondern werden ordnungsgemäß in der Produktion gesendet. Ich möchte eine separate Staging-Instanz auf Heroku ausführen, möchte aber nicht, dass E-Mails gesendet werden (nur zu einem Protokoll).

    
Newy 16.06.2010, 22:21
quelle

7 Antworten

16

Diese Zeile in test.rb weist ActionMailer an, keine E-Mails zu senden:

%Vor%

Stattdessen werden sie im Array ActionMailer :: Base.deliveries gesammelt.

Sie müssen eine Staging-Umgebung für Ihre Anwendung einrichten und Heroku so konfigurieren, dass diese Umgebung in Ihrer Staging-Instanz verwendet wird.

    
Alex Korban 16.06.2010 22:34
quelle
11

Anwendungen, die das E-Mail-Juwel verwenden (einschließlich Rails & gt; = 3.0-Projekte), können das Juwel safety_mailer verwenden. Geben Sie eine Domäne (oder einen Satz von Domänen oder ein Zauberwort in der E-Mail-Adresse) an, zu der die E-Mail weitergeleitet werden darf. Eine E-Mail an alle anderen Domänen wird automatisch gelöscht.

Ссылка

Fügen Sie den Edelstein zu Ihrem Gemfile hinzu und geben Sie Gruppen an (wahrscheinlich keine Produktion), um ihn aufzunehmen.

%Vor%

Vergessen Sie nicht, bundle install zu installieren

Konfigurieren Sie in Ihrer Umgebungsdatei config/environments/development.rb und einige reguläre Ausdrücke.

%Vor%

... und jetzt, E-Mail an [email protected], [email protected], [email protected] alle gesendet werden und E-Mails an andere Empfänger (wie die echten Benutzer in der Produktionsdatenbank, die Sie auf einen Testserver kopiert haben) werden unterdrückt.

    
cluesque 08.02.2012 22:11
quelle
8

Sie könnten an mailtrap.io interessiert sein ( Haftungsausschluss: Ich bin mit diesem Produkt verbunden). Es ist ein perfektes Werkzeug, um E-Mail-Lieferungen in Entwicklung und Produktion zu testen. Alles, was Sie tun müssen, ist, mailtrap.io als SMTP-Server in Ihrer Staging-Umgebung config:

zu setzen %Vor%

Wenn all diese Test-E-Mails in staging env gesendet werden, werden sie in mailtrap zur Ansicht und Freigabe gespeichert. Aber keiner von ihnen wird an die echten Adressen gesendet. Sie können es auch in der Entwicklung verwenden. Und übrigens - es ist völlig kostenlos!

    
gregolsen 23.08.2012 12:00
quelle
6

setze dies in deine Datei environment.rb

%Vor%

Es sollte aufhören, E-Mails an den Mail-Server zu senden, ich denke, es gibt eine: log-Option, aber ich habe es nicht ausprobiert.

    
Chiwai Chan 16.06.2010 22:32
quelle
3

Ich sehe Leute vorschlagen, Mailtrap.io zu verwenden. Eine gute Alternative ist Debug-Mail . Die Verwendung ist ziemlich einfach.

    
user3554642 20.04.2014 19:30
quelle
0

Wir verwenden maildev , das Sie lokal installieren können. Ideal für Entwicklungs- und Staging-Umgebungen, einfach in einer Vielzahl von Technologie-Stacks zu installieren.

    
IanBussieres 07.01.2017 01:39
quelle
0

Abhängig von Ihrer Auswahl

  • Wenn Sie eine bequeme Möglichkeit zum Empfangen von E-Mails zum Debuggen usw. wünschen, empfehle ich https://github.com/fgrehm/letter_opener_web , die E-Mails lokal speichert und eine URL zum Durchsuchen der gesendeten E-Mails bereitstellt. Es wird keine E-Mail gesendet, und Sie können die Ausgabe in Ihrem Browser sehr bequem sehen

  • Wenn Sie E-Mail-Dateien mit Ihren E-Mail-Clients öffnen möchten, sollten Sie einen :file Adapter für ActionMailer (konfigurieren in config/environments/your_env.rb )

  • wählen
  • Wenn Sie eine echte produktionsähnliche Umgebung wünschen, würde ich vorschlagen, einen E-Mail-Interceptor zu konfigurieren, der das TO / CC / BCC in ein echtes Postfach Ihrer Wahl umschreibt, damit Sie Ihren ursprünglichen ActionMailer-Adapter behalten und testen können

    %Vor%
Cyril Duchon-Doris 12.01.2017 12:19
quelle

Tags und Links