function SMTP::startTLS

5.x SMTP.php public SMTP::startTLS()

Initiate a TLS (encrypted) session.

Return value

bool

File

inc/PHPMailer/src/SMTP.php, line 384

Class

SMTP
PHPMailer RFC821 SMTP email transport class. Implements RFC 821 SMTP commands and provides some utility methods for sending mail to an SMTP server.

Code

public function startTLS() {
  if (!$this->sendCommand('STARTTLS', 'STARTTLS', 220)) {
    return false;
  }

  //Allow the best TLS version(s) we can
  $crypto_method = STREAM_CRYPTO_METHOD_TLS_CLIENT;

  //PHP 5.6.7 dropped inclusion of TLS 1.1 and 1.2 in STREAM_CRYPTO_METHOD_TLS_CLIENT
  //so add them back in manually if we can
  if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) {
    $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT;
    $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT;
  }

  // Begin encrypted connection
  set_error_handler([$this 'errorHandler']);
  $crypto_ok = stream_socket_enable_crypto($this->smtp_conn, true, $crypto_method);
  restore_error_handler();

  return (bool) $crypto_ok;
}