Inhaltsverzeichnis
Inhaltsverzeichnis
Grundsätzliches
Es gibt einige Möglichkeiten zu schauen, ob eine Email via SMTP versendet wurde oder via PHPMailer.
Die erste Möglichkeit ist mMn. [MB] am besten, da sie mehr Details zeigt.
- Selbständig eine PW-Vergessen mail zusenden
- aktivieren von „SMTP-Debugging“ in der config.inc.php (wird aber für alle Sichtbar sein, also AUCH KUNDEN!)
- eine Datei mit nachfolgendem Inhalt erstellen. Diese dann via url aufrufen:
www.example.de/[kürzel]d3smtp.php
UNBEDINGT die Datei danach löschen ODER alle Rechte entfernen!
<?php
require_once "bootstrap.php";
$oConfig = \OxidEsales\Eshop\Core\Registry::getConfig();
$recipient = $oConfig->getRequestParameter("recipient") ;
$smtpHost = $oConfig->getRequestParameter("host");
$smtpPort = $oConfig->getRequestParameter("port");
$smtpUser = $oConfig->getRequestParameter("user");
$smtpPass = $oConfig->getRequestParameter("pass");
print '<html>
<body>
<form action="">
<table width="">
<tr>
<td><input type="text" name="host" placeholder="host" value="'.$smtpHost.'" /></td>
<td><input type="text" name="port" placeholder="port" value="'.$smtpPort.'" /></td>
<td><input type="text" name="user" placeholder="user" value="'.$smtpUser.'" /></td>
<td><input type="text" name="pass" placeholder="pass" value="'.$smtpPass.'" /></td>
<td><input type="text" name="recipient" placeholder="recipient" value="'.$recipient.'" /></td>
<td><button type="submit">📧</button></td>
</tr>
</table>
</form>
</body>
</html>';
if($smtpHost && $smtpPort && $smtpUser && $smtpPass && $recipient)
{
$oEmail = oxNew(\OxidEsales\Eshop\Core\Email::class);
$oEmail->IsSMTP();
$oEmail->SMTPDebug = 3;
$oEmail->SMTPAuth = true;
$oEmail->Host = $smtpHost;
$oEmail->Port = $smtpPort;
$oEmail->SMTPSecure = "tls";
$oEmail->Username = $smtpUser;
$oEmail->Password = $smtpPass;
$oEmail->setFrom($smtpUser);
$oEmail->setRecipient($recipient);
$oEmail->setSubject($smtpUser." Test Email from ".gethostname());
$oEmail->setBody("<h1>".date("Y-m-d H:i:s")."</h1>");
$oEmail->setAltBody(date("Y-m-d H:i:s"));
var_dump($oEmail->send());
}
Worauf ist zu achten?
- Erste Möglichkeit:
- man bekommt also die PW-Zurücksetzen-Email
- öffnet sie im gewünschten Postfach
- klickt auf Details und findet sich sie Kopfzeilen, am besten Alle
- zu finden dann ein Eintrag „Received“ dort muss SMTP oder ESMTP zu finden sein. Damit ist dann immerhin SMTP (oder eine Erweiterung) dessen benutzt worden
- nun muss noch überpüft werden, dass „X-PHP-Originating-Script“ nicht zu finden ist
- dieser Eintrag ist nur zu finden, wenn PHPMailer verwendet wurde
- zusätzlich kann der Wert (meist) ganz unten unter „X-SpamAssassin“ überprüft werden
- der ist oftmals im Minusbereich, sobald SMTP erfolgreich angewendet wurde
- dieser Wert ist mit Obacht zu geniesen:
- er kann trotz dessen, dass es (E)SMTP ist, über 0 sein, weil
- es entweder trotzdem PHPMailer nutze (Fallback? Fehler?)
- es bereits viele Mail-Tests gab und nun der Handler denkt, es sei SPAM
- er kann trotz dessen, dass es (E)SMTP ist, über 0 sein, weil
- Zweite Möglichkeit:
- erstellen der Datei
- eintragen der SMTP Daten (SMTP-Port meist 587)
- ganz rechts auf den kleinen Brief klicken
- Ergebnis sollte sein, dass es klappt und einige Einträge erscheinen
- im besten Falle sieht man direkt (E)SMTP oder man sucht eben via STRG + F nach SMTP
- eine Suche nach „PHPMailer“ darf nichts finden
- hier ist aber eine Testbestellung oder ein PW-Vergessen unbedingt trotzdem nötig, da diese Möglichkeit nur überprüft, ob SMTP verwendet wurde und nicht klar stellt, dass der PHPMailer als Fallback verwendet wurde
- das kann aber ignoriert werden, wenn der Kunde keine wilden Mail-Hoster als dritte im Bunde verwendet, sondern den einfachen Profihost-eigenen SMTP-Server
tl;dr
- Erste Möglichkeit
- Kopfzeilen der Email überprüfen
- Received: muss (E)SMTP enthalten
- darf kein „X-PHP-Originating-Script“ – Eintrag vorhanden sein
- X-SpamAssassin am besten im weiten Minusbereich (-19,4 oder ähnlich)
- Kopfzeilen der Email überprüfen
- Zweite Möglichkeit
- nach erstellen und öffnen der Datei im browser
- überprüfen, ob (E)SMTP zu finden ist
- eine Suche nach PHPMailer darf nichts finden