Enviar correo electrónico usando php, gmail y swiftmailer causa un error relacionado con SSL
-
27-10-2019 - |
Pregunta
Aquí está mi código PHP:
function SendCookieToTheMail()
{
require_once 'swift-mailer/lib/swift_required.php';
//Create the Transport
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com')
->setPort(465)
->setEncryption('ssl')
->setUsername('007@gmail.com')
->setPassword('123')
;
//Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);
//Create a message
$message = Swift_Message::newInstance('Test')
->setFrom(array('007@gmail.com' => 'From mr. 007'))
->setTo(array('007@gmail.com', '007@gmail.com' => 'To mr. 007'))
->setBody('Body')
;
//Send the message
$result = $mailer->send($message);
/*
You can alternatively use batchSend() to send the message
$result = $mailer->batchSend($message);
*/
}
Aquí está el error:
( ! ) Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.gmail.com:465 (Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP?) in C:\Program Files\wamp\www\swift-mailer\lib\classes\Swift\Transport\StreamBuffer.php on line 233
( ! ) Fatal error: Uncaught exception 'Swift_TransportException' with message 'Connection could not be established with host smtp.gmail.com [Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP? #44551400]' in C:\Program Files\wamp\www\swift-mailer\lib\classes\Swift\Transport\StreamBuffer.php on line 235
( ! ) Swift_TransportException: Connection could not be established with host smtp.gmail.com [Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP? #44551400] in C:\Program Files\wamp\www\swift-mailer\lib\classes\Swift\Transport\StreamBuffer.php on line 235
¿Dónde está el problema?
Actualización:
Revisé phpinfo()
y dice:
OpenSSL support disabled (install ext/openssl)
Me referí a los enlaces a continuación, pero no pude instalar ssl ...
Solución
¿Su php era compatible con SSL? http://php.net/manual/en/function.fsockopen.php y consulte http://www.php.net/manual/en/openssl.installation.php como referencia.
Cree una página con
phpinfo();
¿Está habilitado SSL?
Otros consejos
Estaba buscando una pregunta similar y descubrí que tienes que editar el archivo php.ini editar la siguiente línea
;extension=php_openssl.dll
elimine el punto y coma y funcionará bien
Espero que ayude a alguien más :)
gmail necesita esto en su config.yml
Swiftmailer: cifrado: tls
o reemplace su: -> setEncryption ('ssl') por -> setEncryption ('tls')
y no ssl
Debe habilitar el módulo php_openssl desde las extensiones php.Simplemente edite su archivo php.ini
extension=php_openssl.dll
de hecho, recomiendo usar tls en el puerto 25 prueba usando la siguiente sintaxis:
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 25, 'tls')
->setUsername('007@gmail.com')
->setPassword('123');
Necesita configurar php para que funcione con ssl
Espero que haya resuelto su problema, sin embargo, para mí, línea:
;extension=php_openssl.dll
no existía en mi php.ini (ejecutando XAMPP 1.7.7 en Win7), así que continúe y agréguelo en la sección de extensiones, elimine el punto y coma y debería funcionar.