/ / PHP envía correo electrónico a través de la aplicación de Google con swift mailer - php, smtp, google-apps, swiftmailer

PHP envía correo electrónico a través de la aplicación de Google con swift mailer - php, smtp, google-apps, swiftmailer

Sé que hay algunas preguntas sobre esto, pero mi problema no está resuelto por ninguno de los que pude encontrar.

Estoy usando swift mailer 4.2.1 en LAMP.

Tengo openSSL habilitado: enter image description here

Así que probé la conexión SSL con el siguiente código:

$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);

Esto me arroja el siguiente error

Excepción no detectada "Swift_TransportException"con mensaje "Error al autenticar en el servidor SMTP con nombre de usuario "email@somedomainwithgoogleapps.com" usando 2 posibles autenticadores "en /Swift/lib/classes/Swift/Transport/Esmtp/AuthHandler.php:171

Si cambio el código para usar tls como:

$transporter = Swift_SmtpTransport::newInstance("smtp.gmail.com", 587, "tls")...(rest is the same)

Me sale el mismo error. Y obtengo un tiempo de espera de conexión si intento usar el puerto 465 con tls.

Si corro:

$sock = fsockopen("tls://smtp.gmail.com", 465, $errno, $errstr, 10);
echo "Socket is: ";
var_dump($sock);

echo "Errors: " . $errno . " " . $errstr;

yo obtengo

Socket is: resource(2) of type (stream) Errors: 0

Información adicional:

var_dump(stream_get_transports());

devoluciones:

array (8) {[0] => cadena (3) "tcp" 1=> cadena (3) "udp" [2] => cadena (4) "unix" [3] => cadena (3) "udg" [4] => cadena (3) "ssl" [5] => cadena (5) "sslv3" [6] => cadena (5) "sslv2" [7] => cadena (3) "tls"}

Así que tengo envoltorios ssl y tls ...

Respuestas

2 para la respuesta № 1

Creo que puedes usar esto:

$transport = Swift_SmtpTransport::newInstance("smtp.googlemail.com", 465, "ssl")
->setUsername("test@gmail.com")
->setPassword("test");

-> smtp con googlemail en lugar de gmail ..


0 para la respuesta № 2

La contraseña que use debe ser la generada a partir de su "Contraseña específica de la aplicación"y no su contraseña original.