Критическая константа для поддержки TLSv1.3 - STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT
, которая была введена в PHP 7.4.0 , но, похоже, недокументирована.
PHPMailer использует константу TLS STREAM_CRYPTO_METHOD_TLS_CLIENT
в классе SMTP, когда шифрование инициализируется через STARTTLS . Эта константа объединяет TLS 1.0, 1.1, 1.2 и 1.3, как вы можете видеть в PHP источнике .
Итак, для вашей конкретной ситуации вы хотите заменить STREAM_CRYPTO_METHOD_TLS_CLIENT
по умолчанию для STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT
. Вы можете добиться того, о чем просите (по крайней мере, для целей тестирования), создав подкласс SMTP-класса и переопределив метод startTLS
, чтобы вы могли контролировать константу TLS.
Однако этот подход будет работать только для SMTP + STARTTLS, а не SMTPS. Для SMTPS (режим ssl
в PHPMailer) вы можете использовать другой подход, который может работать для обоих. Глядя на , этот тестовый пример показывает, что вы можете указать константу типа соединения в параметрах, переданных в stream_context_create
- и это тот самый массив, к которому PHPMailer предоставляет вам доступ, поэтому попробуйте следующее:
$mail->SMTPOptions = [
'ssl' => ['crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT]
];