CakePHP SwiftMailer SMTP TLS OpenSSL Ошибка SSL3_GET_RECORD: неверный номер версии - PullRequest
6 голосов
/ 02 сентября 2011

Я пытаюсь отправить электронное письмо с помощью компонента CakePHP SwiftMailer, который я нашел здесь: http://bakery.cakephp.org/articles/sky_l3ppard/2009/11/07/updated-swiftmailer-4-xx-component-with-attachments-and-plugins

Сервер, на который я отправляю, использует SMTP с TLS через порт 25. Вот ошибка, которую я получаюкогда я пытаюсь отправить письмо:

Notice (8): Trying to get property of non-object [APP/views/helpers/hdl_session.php, line 14]

Warning (2): stream_socket_client() [function.stream-socket-client]: SSL operation failed with code 1. OpenSSL Error messages:
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number [CORE/vendors/classes/Swift/Transport/StreamBuffer.php, line 271]

Warning (2): stream_socket_client() [function.stream-socket-client]: Failed to enable crypto [CORE/vendors/classes/Swift/Transport/StreamBuffer.php, line 271]

Warning (2): stream_socket_client() [function.stream-socket-client]: unable to connect to tls://mail.aedisit.com:25 (Unknown error) [CORE/vendors/classes/Swift/Transport/StreamBuffer.php, line 271]

Warning (2): Illegal offset type in isset or empty [CORE/cake/libs/i18n.php, line 177]

Warning (2): Cannot modify header information - headers already sent by (output started at /srv/www/stage/hypercool/cake/libs/debugger.php:673) [CORE/cake/libs/controller/controller.php, line 742]

Вот информация OpenSSL из моего phpinfo:

openssl
OpenSSL support     enabled
OpenSSL Library Version     OpenSSL 0.9.8o 01 Jun 2010
OpenSSL Header Version  OpenSSL 0.9.8o 01 Jun 2010 

И еще немного информации из моего phpinfo:

PHP Version 5.3.5-1ubuntu7.2
Registered Stream Socket Transports     tcp, udp, unix, udg, ssl, sslv3, sslv2, tls 

Любая помощь здесь приветствуется: -)

РЕДАКТИРОВАТЬ:

Сбой операции SSL с кодом 1. Сообщения об ошибках OpenSSL: ошибка: 1408F10B: процедуры SSL: SSL3_GET_RECORD: неправильный номер версии

Кажется, это корень проблемы.Кто-нибудь знает, что именно это означает?

Ответы [ 3 ]

2 голосов
/ 09 февраля 2012

Обновите свои библиотеки SwiftMailer.Недавно я столкнулся с этой проблемой с SwiftMailer 4.0.6 и обновил до 4.1.6 - теперь он работает как чудо:)

2 голосов
/ 06 сентября 2011

Мы решили эту проблему.Проблема оказалась в нашей версии SSL и методе подключения SwiftMailer.Компонент SwiftMailer пытался подключиться с использованием TLS, когда вместо этого сначала нужно было подключиться в виде открытого текста, а затем инициировать подключение TLS.Надеюсь, что это поможет кому-то еще с этой проблемой.

0 голосов
/ 20 апреля 2018

Я решил проблему. Вот конфигурация, которую вы можете использовать:

'default' => [
    'className' => 'Smtp',
    'host' => 'ssl://smtp.gmail.com',
    'username' => 'GMAIL_EMAIL_ADDRESS',
    'password' => 'GMAIL_PASSWORD',
    'port' => 465, //here was the problem
    'timeout' => 50,
    'client' => null,
    'tls' => null,
    'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null),
],

Если вы используете EC2 (экземпляр AWS), вам нужно разрешить порт 465 (создать пользовательское правило TCP для SMTP - порт 25 или SMTPS - порт 465)

...