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:
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 № 1Creo 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.