Привет, я пытаюсь отправить некоторые письма через gmail из модуля Zend_Mail. Это мой код:
$config = array( 'ssl' => 'tls', 'port' => 587, 'auth' => 'login', 'username' => 'webmaster@mydomain.com', 'password' => 'password' ); $smtpConnection = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);
Ошибка:
Предупреждение: stream_socket_enable_crypto () [streams.crypto]: этот поток не поддерживает SSL / crypto в /library/Zend/Mail/Protocol/Smtp.php в строке 206 Не удается подключиться через TLS
Я попробовал сообщить моему хостинг-провайдеру, чтобы включить openssl.dll в phi.ini
Но они говорят, что это не обязательно, поскольку сервер находится в Linux, и ему не нужно разрешать openssl.dll работать с TLS или SSL.
Является ли мой хостинг-провайдер неправильным, или я делаю что-то неправильно в своем коде.
заранее спасибо
Fabian
openssl.dll – это расширение windows openssl.
В Linux вам нужно скомпилировать PHP с поддержкой OpenSSL. http://www.php.net/manual/en/openssl.installation.php
Для использования TLS вам необходимо использовать OpenSSL для сокетов PHP и потоковых функций. Zend использует эти функции и, следовательно, требует того же.
У меня была аналогичная проблема, вот что сработало; Использование почтового транспорта Zend и yahoo smtp:
$mailhost= 'smtp.example.com'; $mailconfig = array( 'auth' => 'login', 'username' => 'me@example.com', 'password' => 'topsecret', 'port' => '465', 'ssl' => 'ssl' ); $transport = new Zend_Mail_Smtp($mailhost, $mailconfig); Zend_Mail::setDefaultTransport($transport);
Это вызвало ошибку: «Permission denied» и никакая почта не была отправлена. После трех недель попыток всех решений я смог найти тот, который работал, менялся: $ transport to; $transport = new Zend_Mail_Transport_Sendmail('-fsupport@website.com',$mailhost, $mailconfig);
работает как ожидается …
Очень удобно использовать метод Zend_Mail :: setDefaultTransport
Попробуйте установить ssl: // в качестве префикса для имени хоста и использовать 465 в качестве порта.