2010-05-16 3 views
4

Je reçois beaucoup d'emails dont le contenu est du même modèle, par ex. Je veux écrire un script PHP pour analyser ces e-mails et enregistrer les données dans une base de données. J'ai essayé d'utiliser file_get_contents() pour obtenir le contenu de ces emails.PHP: obtenir le contenu d'une page Web distante qui nécessite une authentification?

Le problème est que cela nécessite une authentification pour accéder à mes emails. Même si je me suis connecté à mon compte de messagerie sur le serveur (localhost), file_get_contents() renvoie toujours la page Web qui me demande de me connecter.

Comment accéder au contenu de mes emails avec un script PHP?

EDIT: c'est un compte Gmail.
Le code suivant ne fonctionne pas.

$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; 

Répondre

0

Je soupçonne que vous essayez d'accéder à un protocole sécurisé (https) en utilisant file_get_contents. Pour que cela fonctionne, vous devez avoir l'authentification et l'extension openssl décommentée dans le fichier php.ini. Sinon, le file_get_contents déclencherait une erreur indiquant qu'il n'a pas pu localiser le fichier/l'URL.

+0

Oui, il est https protocal. Et l'extension openssl est déjà activée. – powerboy

+0

@powerboy: Utilisez-vous le serveur IIS? – Sarfraz

+0

@Sarfraz: Non, il est apache sur windows – powerboy

1
+0

Je vais certainement essayer libgmailer. Mais je suis curieux de savoir comment peut-il faire cela? Je veux dire, comment peut-il obtenir le contenu d'une page Web distante qui nécessite une authentification? – powerboy

+0

@powerboy: Vous pouvez y envoyer des cookies. Maintenant, je n'ai jamais vraiment gâché avec GMail, mais je suppose que vous pouvez directement définir le bon cookie qu'il attend et se connecter à la page de la boîte de réception. Vous pouvez le faire en utilisant 'fsockopen' ou en utilisant cURL. – nico

Questions connexes