Search code examples
phpcurlhotmail

Connect to outlook.com mail server with PHP cURL


I am trying to get an complete answer from the live mail server using php and curl. I tried to connect with pop3 protocol but it's not working.

code-listing 1:

<?php 
    // create curl resource 
    $curl = curl_init(); 
    
    if($curl) {
        /* Set username and password */ 
        curl_setopt($curl, CURLOPT_USERNAME, "[email protected]");
        curl_setopt($curl, CURLOPT_PASSWORD, "password");
        
        curl_setopt($curl, CURLOPT_URL, "pop3://pop3.live.com");
        curl_setopt($curl, CURLOPT_PORT, 995);
        
        curl_setopt($curl, CURLOPT_USE_SSL,CURLUSESSL_ALL);
        
        curl_setopt($curl, CURLOPT_CAINFO, "./certificate.pem");
        
        curl_setopt($curl, CURLOPT_VERBOSE, true);
        
        //return the transfer as a string 
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

        // $output contains the output string 
        $output = curl_exec($curl);
    }
    
    echo $output;

    curl_close($curl); 
?>

When I use this code (with pop3 protocol). the standard output tells me the client connected successfully on port 995. But fails to read the response.

response reading failed

Closing connection 0

but when I use https protocol instead of pop3 (on the same code) I get a partial response. It looks like the entire response header, at least that's what it looks like since it outputs two new lines after the last text.

Accept: */*


Solution

  • cURL has a different protocol identifier for secure POP over SSL.

    Instead of pop3:// try pop3s:// and you should get an answer back.

    * Rebuilt URL to: pop3s://pop3.live.com/
    * Hostname was NOT found in DNS cache
    *   Trying 134.170.170.231...
    * Connected to pop3.live.com (134.170.170.231) port 995 (#0)
    * successfully set certificate verify locations:
    *   CAfile: none
      CApath: /etc/ssl/certs
    * SSL connection using ECDHE-RSA-AES256-SHA
    * Server certificate:
    *    subject: C=US; ST=Washington; L=Redmond; O=Microsoft Corporation; CN=*.hotmail.com
    *    start date: 2015-12-15 22:26:11 GMT
    *    expire date: 2016-12-15 22:26:11 GMT
    *    subjectAltName: pop3.live.com matched
    *    issuer: C=BE; O=GlobalSign nv-sa; CN=GlobalSign Organization Validation CA - SHA256 - G2
    *    SSL certificate verify ok.
    < +OK DUB006-POP162 POP3 server ready
    > CAPA
    < -ERR unrecognized command
    > USER me@xxx
    < +OK password required
    > PASS pass
    < +OK Logged in.
    > LIST
    < +OK 5226 messages:
    string(59927) "1 1830
    2 69432
    3 2751
    4 2726
    5 18506
    6 2868
    7 4636
    8 1955
    9 2242
    10 3697