Я знаю, что этот вопрос задавался раньше, и я прочитал все сообщения, но я все еще не могу найти решение.
У меня есть машина с Windows, на которой установлен wamp. Когда я пытаюсь отправить простое электронное письмо через SMTP-сервер Google, все работает нормально. Хотя, когда я копирую тот же скрипт на машину с Ubuntu 12, я получаю эту ошибку:
PHP Fatal error: Uncaught exception 'Swift_TransportException' with message 'Failed to authenticate on SMTP server with username "[email protected]" using 2 possible authenticators' in /home/TestMail/SwiftMail/lib/classes/Swift/Transport/Esmtp/AuthHandler.php:171
Stack trace:
/home/TestMail/SwiftMail/lib/classes/Swift/Transport/EsmtpTransport.php(289): Swift_Transport_Esmtp_AuthHandler->afterEhlo(Object(Swift_SmtpTransport))
/home/TestMail/SwiftMail/lib/classes/Swift/Transport/AbstractSmtpTransport.php(114): Swift_Transport_EsmtpTransport->_doHeloCommand()
/home/TestMail/SwiftMail/lib/classes/Swift/Mailer.php(76): Swift_Transport_AbstractSmtpTransport->start()
/home/TestMail/testmail.php(73): Swift_Mailer->send(Object(Swift_Message))
thrown in /home/TestMail/SwiftMail/lib/classes/Swift/Transport/Esmtp/AuthHandler.php on line 171
Вот как я инициализирую транспорт:
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')
Я пытался подключиться по телнету к smtp.gmail.com
через порт 465, и это сработало нормально, так что это не должно быть проблемой брандмауэра.
У меня включен SSL с PHP. Я попытался отправить два отдельных письма с SSL и без него с другим почтовым сервером, и все работало как часы. Меня бесит только почта гугла.
Здесь приветствуются любые идеи.
Весь мой php-код:
<?php
require_once 'SwiftMail/lib/swift_required.php';
// Create the Transport
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')
->setUsername('[email protected]')
->setPassword('xxx');
// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);
$htmlbody = 'some html here';
// Create a message
$message = Swift_Message::newInstance('without head')
->setFrom(array('<from email>' => '<some sender>'))
->setTo(array('<to email>' => '<some recepient>'))
->setBody($htmlbody, 'text/html');
// Send the message
$result = $mailer->send($message);
var_dump($result);
?>
Спасибо!