Sending email using php, gmail, and swiftmailer causes SSL-related error

落花浮王杯 提交于 2019-12-12 09:35:59

问题


Here is my PHP code:

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);
    */ 
}

Here is the 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

Where is the problem??

Update:

I checked phpinfo() and it says:

OpenSSL support     disabled (install ext/openssl) 

I referred to the links below, but I couldn't install ssl...


回答1:


Did your php support SSL ? http://php.net/manual/en/function.fsockopen.php, and check http://www.php.net/manual/en/openssl.installation.php for reference.

Create a page with

phpinfo();

Is SSL enabled?




回答2:


i Was searching for a similar question and i found that you have to edit the php.ini file edit the following line

;extension=php_openssl.dll

remove the semi colon and it will work fine

Hope that help any one else :)




回答3:


gmail need this in your config.yml

swiftmailer: encryption: tls

or replace your: ->setEncryption('ssl') by ->setEncryption('tls')

and not ssl




回答4:


You should enable php_openssl module from php extensions. Just edit your php.ini file

extension=php_openssl.dll



回答5:


in fact, I advice to use tls on port 25 test using the following syntax:

$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 25, 'tls')
    ->setUsername('007@gmail.com')
    ->setPassword('123');



回答6:


You need to configure php to work with ssl

http://www.php.net/manual/en/openssl.installation.php




回答7:


I hope that you have solved your issue, however for me line:

;extension=php_openssl.dll

did not exist in my php.ini (running XAMPP 1.7.7 on Win7), so just go ahead and add it in the extensions section, remove semicolon from it and it should work.



来源:https://stackoverflow.com/questions/4846599/sending-email-using-php-gmail-and-swiftmailer-causes-ssl-related-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!