Reputation: 10961
I want to get the contents of some emails in my gmail account. I would like to use the PHP cURL extension to do this. I followed these steps in my first try:
The following code does not work:
$login_url = 'https://www.google.com/accounts/ServiceLoginAuth';
$gmail_url = 'https://mail.google.com/';
$cookie_file = dirname(__FILE__) . '/cookie.txt';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_URL, $login_url);
$output = curl_exec($ch);
echo $output;
curl_setopt($ch, CURLOPT_URL, $gmail_url);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
$output = curl_exec($ch);
echo $output;
curl_close($ch);
Upvotes: 2
Views: 1314
Reputation: 97835
Your approach is wrong. You cannot retrieve the contents of https://www.google.com/accounts/ServiceLoginAuth and output it, expect the user to fill in the details and press login. Since the form is defined as
<form action="https://www.google.com/accounts/ServiceLoginAuth" method="post">
the login details will be submitted by the browser to that page and your script never get hold of the cookies. You need to submit a post request to https://www.google.com/accounts/ServiceLoginAuth already with the username and password. Only then curl will receive a response with the cookies.
That said, I'd suggest you scrape all this, enable IMAP in GMail and use that to access your e-mails.
Upvotes: 4