BlackCatDevelopment / BlackCatCMS

BlackCat CMS is a PHP5, HTML5 content management system
https://blackcat-cms.org
Other
11 stars 9 forks source link

Transportprotokoll tls wird bei SMTP mit Swift nicht gesetzt #406

Closed creativecat closed 1 year ago

creativecat commented 3 years ago

Wenn man im Backend die SMTP-Optionen setzt, dann wird unter Umständen das Protokoll für den Mailversand nicht gesetzt. Das sollte in der framework/CAT/Helper/Mail/SwiftDriver.php passieren:

if (
    isset(self::$settings["smtp_ssl"]) &&
    self::$settings["smtp_ssl"] == true
) {
    if (
        isset(self::$settings["smtp_ssl_port"]) &&
        self::$settings["smtp_ssl_port"] != "" &&
        self::$settings["smtp_ssl_port"] != "25" &&
        self::$settings["smtp_ssl_port"] != "587"
    ) {
        $transports = stream_get_transports();
        if (in_array("tls", $transports)) {
            $tp = "tls";
            $port =
                isset(self::$settings["smtp_ssl_port"]) &&
                self::$settings["smtp_ssl_port"] != ""
                    ? self::$settings["smtp_ssl_port"]
                    : "465";
        } else {
            if (in_array("ssl", $transports)) {
                $tp = "ssl";
                $port =
                    isset(
                        self::$settings["smtp_ssl_port"]
                    ) &&
                    self::$settings["smtp_ssl_port"] != ""
                        ? self::$settings["smtp_ssl_port"]
                        : "465";
            }
        }
    }
}

Bevor diesen Bereich anpasse: Ich verstehe nicht, warum hier die Ports kontrolliert werden. Ich habe den SSL-Port auf 587 gesetzt - deshalb wird die Variable $tp nicht auf "tls" gesetzt. Temporär habe ich das jetzt umgangen, indem ich nach dieser if-Anweisung noch einmal $tp gecheckt habe. Das ist aber keine gute Lösung:

if (
    self::$settings["smtp_ssl_port"] == "587" &&
    !$tp &&
    in_array("tls", stream_get_transports())
) {
    $tp = "tls";
}
webbird commented 1 year ago

Gestrichen, da es Swift nicht mehr gibt.