PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
本文实例讲述了PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法。分享给大家供大家参考。具体实现方法如下:
<?php
header("Content-Type:text/html;charset=UTF-8");
error_reporting(0);
/**
*登陆
*$user163用户名
*$pass密码
**/
functionlogin($user,$pass){
//登陆
$url='http://reg.163.com/logins.jsp?type=1&url=http://entry.mail.163.com/coremail/fcg/ntesdoor2?lightweight%3D1%26verifycookie%3D1%26language%3D-1%26style%3D-1';
$cookie=tempnam('./cache/','~');//创建一个用于存放cookie信息的临时文件
$fields_post=array(
'username' =>$user,
'password' =>$pass,
'verifycookie' =>1,
'style' =>-1,
'product' =>'mail163',
'selType' =>-1,
'secure' =>'on'
);
$fields_string='';
foreach($fields_postas$key=>$value){
$fields_string.=$key.'='.$value.'&';
}
$fields_string=rtrim($fields_string,'&');
$headers=array(
'User-Agent'=>'Mozilla/5.0(Windows;U;WindowsNT5.1;zh-CN;rv:1.9)Gecko/2008052906Firefox/3.0',
'Referer' =>'http://www.163.com'
);
$ch=curl_init($url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);//返回结果存放在变量中,而不是默认的直接输出
curl_setopt($ch,CURLOPT_HEADER,true);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,120);
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie);//关闭连接时,将服务器端返回的cookie保存在以下文件中
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
$result=curl_exec($ch);
curl_close($ch);
preg_match_all('/<divclass="info"id="eHint">(.*?) <\/div>/i',$result,$infos,PREG_SET_ORDER);
if(!empty($infos['0']['1'])){
unlink($cookie);
exit('<scripttype="text/javascript">alert("'.$infos['0']['1'].'");history.go(-1);</script>');
}else{
$G_ROOT=dirname(__FILE__);
file_put_contents($G_ROOT.'/cache/cookie',$cookie);
return$cookie;
}
}
/**
*
*$data['url']请求地址
*$data['data_post']post数据
*$data['cookie']
*
**/
functioncurl($data){
$url=$data['url'];
$data_post=$data['data_post']?$data['data_post']:false;
$cookie=$data['cookie'];
$headers=array(
'User-Agent' =>'Mozilla/5.0(Windows;U;WindowsNT5.1;zh-CN;rv:1.9)Gecko/2008052906Firefox/3.0',
'Referer' =>'http://www.163.com'
);
$ch=curl_init($url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_HEADER,true);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,120);
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie);
curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie); //cookie文件登陆之后
//POST提交
if($data_post){
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data_post);
}
$result=curl_exec($ch);
curl_close($ch);
return$result;
}
希望本文所述对大家的php程序设计有所帮助。