diff --git a/library/config.php b/library/config.php index 0d8a3ec9..8f4b2b96 100644 --- a/library/config.php +++ b/library/config.php @@ -311,8 +311,9 @@ $bb_cfg['emailer_disabled'] = false; // отключить ли отпр $bb_cfg['smtp_delivery'] = false; // использовать ли SMTP (если false, то будет использоваться нативная функция mail()) $bb_cfg['smtp_ssl'] = false; // использовать ли SSL при подключении к SMTP +$bb_cfg['smtp_type'] = 'ssl'; // Тип подключения (Доступные значения: ssl, tls) $bb_cfg['smtp_host'] = ''; // SMTP название хоста -$bb_cfg['smtp_port'] = 25; // SMTP порт сервера +$bb_cfg['smtp_port'] = 25; // SMTP порт сервера (Для SSL - 465, Для TLS - 587) $bb_cfg['smtp_username'] = ''; // указать имя пользователя SMTP (если требуется) $bb_cfg['smtp_password'] = ''; // указать пароль для SMTP (если требуется) diff --git a/library/includes/smtp.php b/library/includes/smtp.php index fa962781..eaf47e27 100644 --- a/library/includes/smtp.php +++ b/library/includes/smtp.php @@ -90,11 +90,12 @@ function smtpmail($mail_to, $subject, $message, $headers = '') } // Ok we have error checked as much as we can to this point let's get on it already - $ssl = ($bb_cfg['smtp_ssl']) ? 'ssl://' : ''; + $ssl = ($bb_cfg['smtp_ssl'] && $bb_cfg['smtp_type'] == 'ssl') ? 'ssl://' : ''; if( !$socket = @fsockopen($ssl . $bb_cfg['smtp_host'], $bb_cfg['smtp_port'], $errno, $errstr, 20) ) { bb_die('Could not connect to smtp host : '. $errno .' : '. $errstr); } + stream_socket_enable_crypto($socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT); // Wait for reply server_parse($socket, "220", __LINE__); @@ -106,6 +107,16 @@ function smtpmail($mail_to, $subject, $message, $headers = '') fputs($socket, "EHLO " . $bb_cfg['smtp_host'] . "\r\n"); server_parse($socket, "250", __LINE__); + // tls support + if ($bb_cfg['smtp_type'] == 'tls') + { + fputs($socket, "STARTTLS\r\n"); + server_parse($socket, "250", __LINE__); + + fputs($socket, "EHLO " . $bb_cfg['smtp_host'] . "\r\n"); + server_parse($socket, "250", __LINE__); + } + fputs($socket, "AUTH LOGIN\r\n"); server_parse($socket, "334", __LINE__);