Angenommen, wir haben eine leere WP-Site und möchten die SMTP-Einstellungen programmgesteuert in unserem Plugin oder Theme einrichten. Was ist der einfachste Weg, ohne die Kerndateien zu ändern?
Wenn wir uns zunächst die Implementierung der wp_mail
Funktion ansehen , werden wir feststellen, dass diese Funktion die PHPMailer
Klasse zum Senden von E-Mails verwendet. Wir konnten auch feststellen, dass es einen fest codierten Funktionsaufruf gibt $phpmailer->IsMail();
, der die Verwendung der PHP- mail()
Funktion einstellt . Dies bedeutet, dass wir keine SMTP-Einstellungen verwenden können. Wir müssen die isSMTP
Funktion der PHPMailer
Klasse aufrufen . Und wir müssen auch unsere SMTP-Einstellungen vornehmen.
Um dies zu erreichen, müssen wir Zugriff auf $phpmailer
Variable erhalten. Und hier kommen wir zum phpmailer_init
Handeln, das vor dem Versenden einer E-Mail aufgerufen wird. Wir können also tun, was wir brauchen, indem wir unseren Action-Handler schreiben:
add_action( 'phpmailer_init', 'wpse8170_phpmailer_init' );
function wpse8170_phpmailer_init( PHPMailer $phpmailer ) {
$phpmailer->Host = 'your.smtp.server.here';
$phpmailer->Port = 25; // could be different
$phpmailer->Username = '[email protected]'; // if required
$phpmailer->Password = 'yourpassword'; // if required
$phpmailer->SMTPAuth = true; // if required
// $phpmailer->SMTPSecure = 'ssl'; // enable if required, 'tls' is another possible value
$phpmailer->IsSMTP();
}
Und das ist alles.
wp_mail
Funktion zum erneuten Schreiben zu verwenden.Zusatz zu @EugeneManuilov Antwort.
SMTP-Einstellungen
Standardmäßig können diese nur - wie @EugeneManuilov bereits beantwortet hat - durch einen an eine angehängten Rückruf gesetzt werden
do_action_ref_array()
. Quelle / Kern .SMTP-Ausnahmen
Standardmäßig gibt WordPress keine Debug-Ausgabe aus. Stattdessen wird nur zurückgegeben,
FALSE
wenn ein Fehler aufgetreten ist. Hier ist ein kleines Plugin, um dies zu beheben:Repository
Die Plugins sind beide in diesem Gist auf GitHub verfügbar. Überprüfen Sie daher die Plugins von dort aus, um Aktualisierungen zu erhalten.
quelle
Bei den anderen Antworten auf diesen Beitrag handelt es sich zwar um eine funktionierende Lösung, es geht jedoch nicht um das Sicherheitsproblem beim Speichern Ihrer SMTP-Anmeldeinformationen in einer Plug-in-Datei oder in functions.php. In einigen Fällen mag dies in Ordnung sein, aber die Best Practices schreiben eine sicherere Speicherung dieser Informationen vor. Es gibt wirklich keinen guten Grund, sich beim Schutz Ihrer Anmeldeinformationen nicht an bewährte Methoden zu halten.
Einige schlagen vor, es als Option in der Datenbank zu speichern, bieten jedoch auch die gleichen Sicherheitsprobleme, abhängig von der Anzahl der administrativen Benutzer auf Ihrer Site und davon, ob diese Benutzer diese Anmeldeinformationen sehen können sollen. Dies ist auch der gleiche Grund, kein Plugin dafür zu verwenden.
Der beste Weg, dies zu tun, besteht darin, Konstanten für die phpmailer-Informationen in Ihrer wp-config.php-Datei zu definieren. Dies wurde in der E-Mail-Komponente bereits als Feature erörtert , wurde jedoch zu diesem Zeitpunkt noch nicht als eigentliche Verbesserung akzeptiert. Sie können dies jedoch selbst tun, indem Sie der Datei wp-config.php Folgendes hinzufügen:
Sobald diese in wp-config.php definiert sind, können sie mit der definierten Konstante überall verwendet werden. Sie können diese also in einer Plugin-Datei oder in Ihrer functions.php verwenden. (Verwenden Sie für das OP eine Plugin-Datei.)
Es gibt ein wenig mehr Details dazu in diesem Beitrag und einen Überblick über Github hier .
quelle
.env
stattdessen gitignored file. Aber niemand, der etwas Sensibles inwp-config.php
die Versionskontrolle steckt , benutzt sowieso ...