Знам, че има някои въпроси по този въпрос, но проблемът ми не е решен от нито един от тези, които мога да намеря.
Използвам бърз мейл 4.2.1 на LAMP.
Имам активиран openSSL:
Затова опитах SSL връзка със следния код:
$transporter = Swift_SmtpTransport::newInstance("smtp.gmail.com", 465, "ssl")
->setUsername("email@somedomainwithgoogleapps.com")
->setPassword("pwd");
$mailer = Swift_Mailer::newInstance($transporter);
$message = Swift_Message::newInstance($subject)
->setFrom(array($from => "From name"))
->setTo(array($to=> $name))
->setBody($html_content);
$result = $mailer->send($message);
Това ми хвърля следната грешка
Неуловено изключение "Swift_TransportException"със съобщение „Неуспешно удостоверяване на SMTP сървър с потребителско име "email@somedomainwithgoogleapps.com", използвайки 2 възможни удостоверители "в /Swift/lib/classes/Swift/Transport/Esmtp/AuthHandler.php:171
Ако променя кода, за да използвам tls като:
$transporter = Swift_SmtpTransport::newInstance("smtp.gmail.com", 587, "tls")...(rest is the same)
Получавам същата грешка. И получавам време за изчакване на връзката, ако се опитам да използвам порт 465 с tls.
Ако тичам:
$sock = fsockopen("tls://smtp.gmail.com", 465, $errno, $errstr, 10);
echo "Socket is: ";
var_dump($sock);
echo "Errors: " . $errno . " " . $errstr;
взимам
Socket is: resource(2) of type (stream) Errors: 0
Допълнителна информация:
var_dump(stream_get_transports());
се завръща:
масив (8) {[0] => низ (3) "tcp" 1=> низ (3) "udp" [2] => низ (4) "unix" [3] => низ (3) "udg" [4] => низ (3) "ssl" [5] => низ (5) "sslv3" [6] => низ (5) "sslv2" [7] => низ (3) "tls"}
Така че имам и ssl и tls обвивки ...
Отговори:
2 за отговор № 1Мисля, че можете да използвате това:
$transport = Swift_SmtpTransport::newInstance("smtp.googlemail.com", 465, "ssl")
->setUsername("test@gmail.com")
->setPassword("test");
-> smtp с googlemail вместо gmail ..
0 за отговор № 2
Паролата, която използвате, трябва да е тази, генерирана от вашия "Специална парола за приложение", а не оригиналната ви парола.