CodeIgniter: SSL / TLS SMTP Auth Электронная почта от PHPMailer Code

Я пытаюсь использовать класс CodeIgniter Email для написания безопасного SMTP-сообщения; либо SSL, либо TLS (предпочтительно). Раньше я успешно использовал PHPMailer с Secure Auth и TLS. Я считаю, что это безопасная связь. TLS отображается в заголовке электронной почты.

Поддерживает ли класс почтовых классов CodeIngiters безопасную аутентификацию SMTP с помощью TLS?

Обратите внимание, что это не вопрос Gmail. Я пытаюсь использовать его с MS Exchange Server. Я правильно подтвердил код PHPMailer ниже функций.

include_once('includes/class.phpmailer.php'); $mail = new PHPMailer(true); $mail->IsSMTP(); $mail->Host = 'www.domain.com'; $mail->SMTPAuth = true; $mail->SMTPSecure = "tls"; $mail->Port = '25'; $mail->Timeout = '60'; $mail->Username = 'user@domain.com'; $mail->Password = 'password'; $mail->From = 'alerts@domain.com'; $mail->FromName = 'Alerts'; $mail->Subject = 'Test from test email file.'; $mail->IsHTML(true); $mail->MsgHTML('This is just a test.'); // To $mail->AddAddress('alerts@domain.com', 'Research'); $result = $mail->Send(); 

С CodeIgniter я уже расширил класс электронной почты (MY_Email.php). Класс немного большой, чтобы публиковать здесь. Но вот ошибка, которую я продолжаю получать.

Настройки:

 array(7) { ["smtp_host"]=> string(26) "tls://www.domain.com" ["smtp_port"]=> string(2) "25" ["smtp_user"]=> string(17) "alerts@domain.com" ["smtp_pass"]=> string(9) "password" ["smtp_to_email"]=> string(26) "user@domain.com" ["smtp_from_email"]=> string(26) "user@domain.com" ["smtp_from_name"]=> string(24) "Test from Application" } 

Сообщение об ошибке:

fsockopen (): операция SSL завершилась неудачно с кодом 1. OpenSSL Сообщения об ошибках: ошибка: 1408F10B: Подпрограммы SSL: func (143): reason (267)

Любая идея, какая причина 267?

Как диагностировать ошибки OpenSSL:

Посмотрите на сообщение об ошибке:

 error:1408F10B:SSL routines:func(143):reason(267) 

Возьмите код причины (267) и определите ошибку:

 grep 267 /usr/include/openssl/ssl.h /usr/include/openssl/ssl.h:#define SSL_R_WRONG_VERSION_NUMBER 267 

Теперь google для SSL_R_WRONG_VERSION_NUMBER

Прочтите первый хит: http://www.mail-archive.com/openssl-dev@openssl.org/msg02770.html

 " Many of SSL clients sends the first CLIENT HELLO with ssl2 format (0x80.....) because they don't know what version the server supports. In this first message, the client sends the version he wants to use (3 for SSL3), then the other exchanged messages are in the appropriate format SSL3 for V3, SSL2 for V2 etc.... So in your server method configuration you must put: SSL_CTX *ctx = SSL_CTX_new (SSLv23_server_method()) to correctely analyse the first client_hello message instead of SSL_CTX *ctx = SSL_CTX_new (SSLv3_server_method()) which i suppose you did. " 

Вывод: SMTP-сервер использует SSLv3_server_method и поэтому должен быть исправлен для использования SSLv23.

Нашел решение на форумах CI.

Пакет обновления электронной почты Exchange http://codeigniter.com/forums/viewthread/158882/

Он инициирует TLS после подключения SMTP-сервера.

Работал для меня. Джефф