Моей средой разработки является Win XP SP2 / Apache 2. что-то PHP 5.something_or_other
Моя рабочая среда - Linux Ubuntu / Apache 2.something_else PHP 5.something_or_other_else
Код всего Zend Framework Версия: 1.11.1
Я могу telnet: smtp.gmail.com 465 с ПК.
У меня на компьютере настроен Mercury для использования gmail в качестве хоста smtp, и он работает просто отлично. (MercuryC SMTP-клиент). Mercury настроен на использование порта 465 и SSL на smtp.gmail.com
- Нет проблем.
Zend mail прекрасно работает в моей производственной среде, используя рабочий почтовый сервер для отправки почты. Это тот же базовый application.ini, но с разными значениями в почтовых переменных.
На моем локальном компьютере с настройкой ПК мой application.ini содержит: (те же значения, что и в Mercury)
mail.templatePath = APPLICATION_PATH "/emails"
mail.sender.name = "myAccount"
mail.sender.email = "myAccount@gmail.com"
mail.host = smtp.gmail.com
mail.smtp.auth = "login"
mail.smtp.username = "myAccount@gmail.com"
mail.smtp.password = "myPassWord"
mail.smtp.ssl = "ssl"
mail.smtp.port = 465
Я часами пробовал и ошибался, пытаясь получить одно электронное письмо безуспешно. В любом случае, независимо от настроек сервера или порта, он выдает ошибку и сообщает:
Could not open socket.
И Apache, и Mercury Core являются исключениями в моей конфигурации брандмауэра Windows. У Меркурия, похоже, нет проблем.
Я выполнил поиск в stackoverflow, прежде чем опубликовать это, и гуглял часами - безуспешно.
Я медленно схожу с ума
Я был бы очень признателен за любой совет относительно того, что может быть не так.
Спасибо за чтение.
===================
КСТАТИ
Когда я использую те же значения application.ini на локальном ПК, что и на производственном хосте, я получаю ту же ошибку «Не удалось открыть сокет».
Эти значения:
mail.templatePath = APPLICATION_PATH "/emails"
mail.sender.name = "otherUser"
mail.sender.email = "otherUser@otherAccount.com"
mail.host = smtp.otherServer.com
mail.smtp.auth = "login"
mail.smtp.username = "otherUser@otherAccount.com"
mail.smtp.password = "otherPAssWord"
mail.smtp.ssl = "ssl"
mail.smtp.port = 465
Я знаю эти работы в производственной (Ubuntu) среде.
Я совершенно сбит с толку.
===============================================
Похоже, что в коде попытка подключения записывается как:
$this->_socket = @stream_socket_client($remote, $errorNum, $errorStr, self::TIMEOUT_CONNECTION);
где $ remote имеет значение:
ssl:\/\/smtp.gmail.com:465
... учитывая значения application.ini выше в моей текущей версии - в соответствии с инструментарием сообщения об ошибке, который я только что вставил.
Поскольку он работает на производстве, я сомневаюсь, что с этим что-то не так. Но ... на случай, если это поможет, вот оно.
На самом деле это выглядит достаточно нормально для меня.
==============================
Кажется, что происходит сбой с номером ошибки 0 - что, как я понимаю, означает какую-то проблему при инициализации сокета.
==============================
Просто ради здравомыслия я только что проверил php.ini и подтвердил, что оба:
extension=php_openssl.dll
extension=php_sockets.dll
... включены.