/ / PHP изпраща имейл чрез приложението google с бърза поща - php, smtp, google-apps, swiftmailer

PHP изпрати имейл чрез Google App с бърза поща - php, smtp, google-apps, swiftmailer

Знам, че има някои въпроси по този въпрос, но проблемът ми не е решен от нито един от тези, които мога да намеря.

Използвам бърз мейл 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

Паролата, която използвате, трябва да е тази, генерирана от вашия "Специална парола за приложение", а не оригиналната ви парола.