SMTP Port wird nicht berücksichtigt

Hallo,

gibt man unter Stammdaten->Grundeinstellungen->SMTP Server die Adresse in z.B. der Form tls://smtp.mail.de:587 an, so wird der Port 587 nicht berücksichtigt. Stattdessen wird Standardport 25 genommen.

Nach etwas Debuggen kam heraus, dass in der Methode _isValidSmtpHost in der oxEmail Klasse beim Typecasting in Integer $sSmtpPort = (int)$aMatch[3]; ein leerer Wert zurückgeliefert wird. Deswegen wird an der Stelle auch auf Standardport 25 zurückgegriffen.

Was ich aber an der Stelle noch viel problematischer finde, ist, dass bei nicht erfolgreicher Verbindung zum STMP Server, einfach auf sendmail gewechselt wird, ohne jegliches Feedback an den Admin. So ist es theoretisch möglich, dass einige User lange Zeit per sendmail verschicken, weil sie davon ausgehen, dass die eingetragenen SMTP Daten korrekt sind.

oxid CE 4.9.1

Viele Grüße
Kostas Strigkos

Kann es sein, dass du nach 587 noch ein Leerzeichen drin hast? Bei Fallback auf sendmail geht normalerweise eine Fehlermail an den Admin raus.

[QUOTE=leofonic;153983]Kann es sein, dass du nach 587 noch ein Leerzeichen drin hast? Bei Fallback auf sendmail geht normalerweise eine Fehlermail an den Admin raus.[/QUOTE]

Kann natürlich sein. Müsste das bei der Umwandlung in Integer aber nicht weggeparst werden?
Eine E-Mail habe ich nicht bekommen. Eine E-Mail Benachrichtigung bei nicht funktionierenden E-Mail Zugangsdaten ist auch nicht wirklich clever :smiley:
Aber ehrlich gesagt kann ich im Code auch nichts von einer Benachrichtigung finden.

Gruß
Kostas

Müsste das bei der Umwandlung in Integer aber nicht weggeparst werden?
Da schlägt schon die regex fehl denke ich.

Eine E-Mail Benachrichtigung bei nicht funktionierenden E-Mail Zugangsdaten ist auch nicht wirklich clever

Die geht ja über sendmail raus.

Aber ehrlich gesagt kann ich im Code auch nichts von einer Benachrichtigung finden.

Na dann schau nochmal:

        // try to send mail via SMTP
        if ($this->getMailer() == 'smtp') {
            $blRet = $this->_sendMail();

            // if sending failed, try to send via mail()
            if (!$blRet) {
                // failed sending via SMTP, sending notification to shop owner
                $this->_sendMailErrorMsg();

                // trying to send using standard mailer
                $this->setMailer('mail');
                $blRet = $this->_sendMail();
            }
        } else {
            // sending mail via mail()
            $this->setMailer('mail');
            $blRet = $this->_sendMail();
        }

Hallo Frank,

eine E-Mail geht tatsächlich über sendmail raus. Trotzdem ist es etwas problematisch, da solche Mails oft im Junk Ordner landen und vom Admin dann eben nicht wahrgenommen werden. Das war bei meinem Outlook Account auf jeden Fall so.
Ein Button im Backend, der eine Testmail versendet und die SMTP Einstellungen überprüft, wäre da meiner Meinung nach angebrachter.

Viele Grüße
Kostas

Ja wäre sicher praktisch um die Einstellungen direkt zu prüfen.