2010-05-16 6 views
1

내 Gmail 계정에서 일부 이메일의 내용을 가져오고 싶습니다. 이 작업을 수행하려면 PHP cURL 확장을 사용하고 싶습니다. 내 첫 시도에서 다음 단계를 따라 갔다.PHP cURL 확장자를 사용하여 두 웹 사이트간에 동일한 쿠키를 공유합니다.

  1. PHP 코드에서 https://www.google.com/accounts/ServiceLoginAuth의 내용을 출력한다.
  2. 브라우저에서 사용자는 로그인 할 사용자 이름과 암호를 입력합니다.
  3. PHP 코드에서 cookie.txt라는 파일에 쿠키를 저장하십시오.
  4. PHP 코드에서 cookie.txt에서 검색 한 쿠키와 함께 https://mail.google.com/에게 요청을 보내고 내용을 출력하십시오.

다음 코드는 작동하지 않습니다

$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); 
+0

왜 작동하지 않습니까? 무슨 일이야? – SLaks

+0

@Slaks : '로그인'버튼을 클릭하면 브라우저가 localhost에서 나가 https://www.google.com/accounts/ServiceLoginAuth로 바로 이동합니다. 따라서 유용한 쿠키가 cookie.txt에 저장되지 않습니다 – powerboy

답변

4

귀하의 접근 방식은 잘못된 것입니다. https://www.google.com/accounts/ServiceLoginAuth의 내용을 검색하여 출력 할 수 없으며 사용자가 세부 정보를 입력하고 로그인을 누를 것을 기대합니다. 형식이

<form action="https://www.google.com/accounts/ServiceLoginAuth" method="post"> 

으로 정의되어 있으므로 로그인 세부 정보가 브라우저에서 해당 페이지로 전송되고 스크립트에 쿠키가 저장되지 않습니다. 사용자 이름과 비밀번호가 인 https://www.google.com/accounts/ServiceLoginAuth에 대한 게시물 요청을 제출해야합니다. 그런 다음에만 말아서 쿠키와 함께 응답을 받게됩니다.

그렇다면이 모든 것을 다 써 버리고 Gmail에서 IMAP을 사용 설정하고 전자 메일에 액세스하는 것이 좋습니다.

+0

그래서 사용자 이름과 비밀번호를 하드 코딩해야합니까? – powerboy

+0

그리고 캘린더와 같은 다른 Google 서비스에 액세스해야 할 수도 있기 때문에 IMAP을 사용하지 않았습니다. – powerboy

+0

아니요. 전자 메일 가져 오기 스크립트 인 사용자 이름 및 암호 필드가있는 양식을 표시 할 수 있습니다. 그런 다음 제출 된 데이터를 읽고 POST 데이터로 보내도록 컬을 구성합니다. – Artefacto

관련 문제