Ich habe einen Entwicklungs-, Staging- und Live-Server-Workflow auf Pantheon eingerichtet. Meine Website enthält viele Regeln, die dazu führen, dass Mitglieder aus verschiedenen Gründen per E-Mail benachrichtigt werden. Manchmal muss ich auf meinen Entwicklungs- / Staging-Sites daran arbeiten, aber ich habe festgestellt, dass Benutzer, da sie die Live-Daten haben, manchmal zusätzliche oder doppelte E-Mails erhalten, wenn ich an etwas arbeite.
Gibt es eine einfache Möglichkeit, alle E-Mail-Funktionen auf einem Entwickler- / Staging-Server zu deaktivieren (vorzugsweise automatisch, um zu verhindern, dass ich sie vergesse)? Idealerweise möchte ich E-Mail über ein benutzerdefiniertes Modul deaktivieren, da ich bereits Schritte eingerichtet habe, um sicherzustellen, dass ein benutzerdefiniertes Modul auf dev / staging aktiviert ist.
git update-index --assume-unchanged sites/default/settings.php
, dass settings.php in verschiedenen Umgebungen verwendet wird. Einige Leute bevorzugen eine bedingte Logik, die die Umgebungseinstellungen überprüft und verschiedene, auf der Umgebung basierende Conf-Dateien enthält (so ziemlich jedes andere existierende Webframework in einer beliebigen Sprache). Die einzige Grenze hier ist die Vorstellungskraft, es sind grundlegende PHP / Git-Sachen, die nicht zu den Antworten hinzugefügt werden müssensites/default/settings.php
, tun Sie dies stattdessengit update-index --skip-worktree sites/default/settings.php
. Mit--assume-unchanged
verlieren Sie die Änderungen, die Sie an settings.php vorgenommen haben, wenn Sie agit reset --hard
. Siehe stackoverflow.com/questions/13630849/…Antworten:
Als weitere, schnellere Option können Sie die folgenden Zeilen zur settings.php-Datei Ihrer Site hinzufügen (wenn Sie das Devel-Modul installiert haben, was Sie auf jeden Fall tun sollten, wenn es sich um eine Entwickler-Site handelt).
Dadurch wird das Standard-Mail-System durch das Entwicklungs-Mail-System von Devel ersetzt, das E-Mails in ein Dateiprotokoll schreibt, anstatt sie an einen Empfänger zu senden. Standardmäßig werden die Dateien in gespeichert.
temporary://devel-mails
Sie können dies jedoch ändern, indem Sie eine andere Variable festlegen, z.quelle
Nur eine Anmerkung zum Hinzufügen eines weiteren Moduls zur Liste "Es gibt ein Modul für dieses":
Ich bin damit einverstanden, dass diese Funktionalität leicht mit ein paar Codezeilen implementiert werden kann, aber mit diesem Modul können Sie weiterhin E-Mails an eine vordefinierte Adresse mit Details zum ursprünglichen Empfänger erhalten, nette Funktionalität imho.
quelle
Oder Sie können hook_mail_alter verwenden, um Drupal-Mails umzuleiten oder zu verhindern:
quelle
git commit .
oder ähnliches.Drupal 8
Für Drupal 8 können Sie den E-Mail-Handler des Devel-Moduls über das Konfigurationssystem aktivieren.
Damit
drush
wäre es:quelle
settings.local.php
:$config['system.mail']['interface']['default'] = 'devel_mail_log';
$config['devel.settings']['debug_mail_directory'] = 'temporary://my-directory';
.In diesem Fall verwende ich normalerweise das E-Mail-Umleitungsmodul . Es kann alle E-Mails von dev an bestimmte E-Mails umleiten. In der gesendeten E-Mail wird auch angegeben, wohin diese E-Mail gesendet werden soll.
quelle
Dies funktioniert ohne Entwicklung und ist in allen drei Umgebungen sicher.
Fügen Sie dies in settings.php hinzu. Kopieren Sie es und ändern Sie die Umgebung in
test
für Test.Dann in mymodule:
Die E-Mail-Änderungsidee ist unter http://www.jaypan.com/tutorial/preventing-emails-being-sent-drupal-7-development-environment erhältlich .
quelle
Ich denke, dass Mail Redirect- Modul perfekt für Sie ist :) Ein anderer schmutziger Weg ist die Installation des SMTP-Moduls und die Einstellung eines falschen SMTP;)
quelle
https://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_mail_alter/7
quelle
Sie können dies also in Ihre settings.php oder settings.local.php einfügen, wenn Sie spezielle Einstellungen für Entwicklung, Inszenierung und Produktion haben.
quelle
Angenommen, Sie verwenden das Mailsystem- Modul, gehen Sie zu
admin/config/system/mailsystem
und wählen SieDevelMailLog
.quelle
Richten Sie Ihr SMTP für den MailCatcher ( GitHub ) ein
localhost
und installieren Sie ihn. Er fängt alle an ihn gesendeten Nachrichten ab, um sie auf einer Weboberfläche anzuzeigen.Installation
gem install mailcatcher
mailcatcher
Konfigurieren Sie Ihr
sendmail_path
in PHP um:oder in der Apache Konfiguration :
Gehe zu
http://localhost:1080/
smtp://localhost:1025
In Drush können Sie Folgendes tun:
quelle
Wenn Sie Drupal-Konfigurationen nicht berühren möchten, richten Sie MailHog auf Ihrem Server ein, um alle E-Mails aus Ihrer Anwendung abzufangen .
quelle
Wenn Sie das SMTP-Authentifizierungs-Support- Modul aktivieren, können Sie Ihren SMTP-Mail-Server direkt unter deaktivieren
admin/config/system/smtp
.quelle