Enviar e-mail usando php, gmail e swiftmailer causa erro relacionado ao SSL
-
27-10-2019 - |
Pergunta
Aqui está meu 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);
*/
}
Aqui está o erro:
( ! ) 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
Onde está o problema ??
Atualização:
Eu verifiquei phpinfo()
e ele diz:
OpenSSL support disabled (install ext/openssl)
Eu me referi aos links abaixo, mas não consegui instalar o ssl ...
Solução
Seu php oferece suporte a SSL? http://php.net/manual/en/function.fsockopen.php e verifique http://www.php.net/manual/en/openssl.installation.php para referência.
Crie uma página com
phpinfo();
O SSL está ativado?
Outras dicas
Eu estava procurando por uma pergunta semelhante e descobri que você precisa editar o arquivo php.ini edite a seguinte linha
;extension=php_openssl.dll
remova o ponto e vírgula e funcionará bem
Espero que ajude mais alguém :)
o gmail precisa disso no seu config.yml
swiftmailer: criptografia: tls
ou substitua o seu: -> setEncryption ('ssl') de -> setEncryption ('tls')
e não ssl
Você deve habilitar o módulo php_openssl de extensões php.Basta editar seu arquivo php.ini
extension=php_openssl.dll
na verdade, aconselho usar tls na porta 25 teste usando a seguinte sintaxe:
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 25, 'tls')
->setUsername('007@gmail.com')
->setPassword('123');
Você precisa configurar o php para funcionar com ssl
Espero que você tenha resolvido seu problema, mas para mim linha:
;extension=php_openssl.dll
não existia no meu php.ini (executando o XAMPP 1.7.7 no Win7), então vá em frente e adicione-o na seção de extensões, remova o ponto-e-vírgula e ele deve funcionar.