#1726·QloApps

Bug: SMTP TLS encryption forces ssl:// connection on port 587 (STARTTLS broken)

Author: varunchaturvedi-atishaylimitedCreated Jun 1, 2026Updated Jun 24, 2026

Description When selecting TLS as the SMTP encryption method in Admin > Advanced Parameters > E-mail, QloApps incorrectly forces a direct SSL connection (ssl://) instead of using STARTTLS. This causes the connection to fail on port 587 with errors like:

  • "wrong version number"
  • "SSL routines: wrong version number"

Root Cause In classes/Mail.php, the $isTls variable is set to true for ANY encryption that is not "off" — including "tls". However, in Symfony Mailer's EsmtpTransport, passing true for $tls forces a direct SSL/SMTPS connection (ssl://), which is only correct for port 465.

For port 587 with STARTTLS, $isTls must be false so EsmtpTransport starts an unencrypted connection and upgrades it via STARTTLS automatically.

Affected code (classes/Mail.php ~line 145 and ~line 504):

php
// CURRENT (BUGGY) CODE:
if (!isset($configuration['PS_MAIL_SMTP_ENCRYPTION'])
    || Tools::strtolower($configuration['PS_MAIL_SMTP_ENCRYPTION']) === 'off'
) {
    $isTls = false;
} else {
    $isTls = true; // ← This incorrectly forces ssl:// for TLS/STARTTLS
}

**Fix :**
// CORRECT CODE:
if (isset($configuration['PS_MAIL_SMTP_ENCRYPTION'])
    && Tools::strtolower($configuration['PS_MAIL_SMTP_ENCRYPTION']) === 'ssl'
) {
    $isTls = true;  // Direct SSL — correct for port 465
} else {
    $isTls = false; // STARTTLS — correct for port 587
}