2010-05-16 51 views
4

我收到許多內容相同的電子郵件,例如PHP:獲取需要驗證的遠程網頁的內容?

Name: XXX 
Phone: XXX 
Bio: XXX 
...... 

我想編寫一個PHP腳本來解析這些電子郵件並將數據保存到數據庫中。我試圖使用file_get_contents()來獲取這些電子郵件的內容。

問題是,它需要身份驗證才能訪問我的電子郵件。即使我已登錄到服務器上的電子郵件帳戶(實際上是localhost),file_get_contents()仍會返回提示我登錄的網頁。

那麼如何使用PHP腳本訪問我的電子郵件內容?

編輯:它是一個gmail帳戶。
以下代碼不起作用。

$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_COOKIEFILE, $cookie_file); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); 

curl_setopt($ch, CURLOPT_URL, $gmail_url); 
// not sure how to set this option 
curl_setopt($ch, CURLOPT_REFERER, $login_url); 

$output = curl_exec($ch); 
curl_close($ch); 

echo $output; 

回答

0

我懷疑你正試圖訪問使用file_get_contents安全協議(https)。爲此,您應該在php.ini文件中取消註釋身份驗證和openssl擴展。否則,file_get_contents會引發無法找到文件/網址的錯誤。

+0

是的,這是HTTPS protocal。 openssl擴展已經啓用。 – powerboy 2010-05-16 06:59:52

+0

@powerboy:你在使用IIS服務器嗎? – Sarfraz 2010-05-16 07:14:31

+0

@Sarfraz:不,它是windows上的apache – powerboy 2010-05-16 07:15:56

1
+0

我一定會嘗試libgmailer。但我很好奇它如何做到這一點?我的意思是,它如何獲得需要驗證的遠程網頁的內容? – powerboy 2010-05-16 07:07:10

+0

@powerboy:您可以發送cookie給它。 現在,我從來沒有真正搞砸GMail,但我認爲你可以直接設置他期待的正確的cookie並連接到收件箱頁面。 你可以用'fsockopen'或cURL來做到這一點。 – nico 2010-05-16 07:35:19