Testing SMTP settings

there are two options for testing your SMTP settings:

  1. enter your settings in admin and send yourself a “forgot password” email. You can enable SMTP debugging in your config.inc.php but it will affect everybody in your shop, so if your shop is already live you should go with seconds option.

  2. create new file in source directroy and give it a random name, so nobody can guess it, then paste this code into your file:

<?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());
}

now you can manually enter your smtp data and test it before changing OXID settings.

1 Like

Hallo Marat, dieses Script habe ich umgesetzt. Seither erhalte ich Fehlermeldungen im error.log:

PHP Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/…/…/source/mein_smtp_test.php:27) in /www/htdocs/…/…/vendor/oxid-esales/oxideshop-ce/source/Core/UtilsServer.php on line 66

Wie bekomme ich dieses Problemchen wieder weg?

Gehostet bei All-Inkl. Community Edition 6.2.2. Quasi keine PHP -Kenntnisse.
Danke und Grüße
Meliphagidae

“seither” klingt komisch. Dieses Script ist eigentlich für ein einmaliges Testen gedacht und sollte danach gelöscht werden. Es sollte definitiv nicht dauerhaft auf dem Server bleiben.

Naja, korrekt wäre, “ab da”. Ich hatte Probleme mit dem Kontaktformular und dieses gleich wieder nach der Nutzung des SMTP-Test-Scripts benutzt. Dann gab es diese Fehler. Heute einen Tag später konnte ich das Kontaktformular nutzen ohne Einträge in error.log, aber nur bis ich wieder das Script aufgerufen hatte. Gäbe es vielleicht eine Möglichkeit, das Script sauber zu beenden?
Dank!