PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法


Posted in PHP onMarch 07, 2015

本文实例讲述了PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法。分享给大家供大家参考。具体实现方法如下:

<?php

    header("Content-Type: text/html; charset=UTF-8");

    error_reporting(0);

    /**

     * 登陆

     * $user 163用户名

     * $pass 密码

    **/

    function login($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_post as $key => $value){

            $fields_string .= $key . '=' . $value . '&';

        }    

        $fields_string = rtrim($fields_string , '&');

        $headers = array(

            'User-Agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/2008052906 Firefox/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('/<div class="info" id="eHint">(.*?) <\/div>/i', $result,$infos,PREG_SET_ORDER);

        if(!empty($infos['0']['1'])){

            unlink($cookie);

            exit('<script type="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']

     *

    **/

    function curl($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; Windows NT 5.1; zh-CN; rv:1.9) Gecko/2008052906 Firefox/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程序设计有所帮助。

PHP 相关文章推荐
用PHP生成静态HTML速度快类库
Mar 18 PHP
php 分页函数multi() discuz
Jun 21 PHP
php下批量挂马和批量清马代码
Feb 27 PHP
比较时间段一与时间段二是否有交集的php函数
May 31 PHP
解析如何在PHP下载文件名中解决乱码的问题
Jun 20 PHP
完整删除ecshop中获取店铺信息的API
Dec 24 PHP
php编写的抽奖程序中奖概率算法
May 14 PHP
Zend Framework基本页面布局分析
Mar 19 PHP
Yii2基于Ajax自动获取表单数据的方法
Aug 10 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
Feb 17 PHP
php使用socket调用http和smtp协议实例小结
Jul 26 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
Apr 07 PHP
PHP多文件上传类实例
Mar 07 #PHP
PHP实现阳历到农历转换的类实例
Mar 07 #PHP
Laravel 5 学习笔记
Mar 06 #PHP
ThinkPHP3.2.2的插件控制器功能
Mar 05 #PHP
ThinkPHP3.2.3数据库设置新特性
Mar 05 #PHP
ThinkPHP 3.2 版本升级了哪些内容
Mar 05 #PHP
thinkPHP学习笔记之安装配置篇
Mar 05 #PHP
You might like
使用bcompiler对PHP文件进行加密的代码
2010/08/29 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
ecshop 2.72如何修改后台访问地址
2015/03/03 PHP
php实现的SSO单点登录系统接入功能示例分析
2016/10/12 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
2019/10/22 PHP
Ext grid 添加右击菜单
2009/11/26 Javascript
jquery isType() 类型判断代码
2011/02/14 Javascript
javascript的alert box在java中如何显示多行
2014/05/18 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
JS实现的Unicode编码转换操作示例
2017/04/28 Javascript
vue路由跳转时判断用户是否登录功能的实现
2017/10/26 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
vue data引入本地图片的两种方式小结
2019/11/13 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
2020/04/22 Javascript
[52:03]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第三场 1月31日
2021/03/11 DOTA
python基于multiprocessing的多进程创建方法
2015/06/04 Python
Python线程指南详细介绍
2017/01/05 Python
Python编程修改MP3文件名称的方法
2017/04/19 Python
Python md5与sha1加密算法用法分析
2017/07/14 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
2018/01/04 Python
python调用系统ffmpeg实现视频截图、http发送
2018/03/06 Python
Python文本处理之按行处理大文件的方法
2018/04/09 Python
python日志logging模块使用方法分析
2019/05/23 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
keras中模型训练class_weight,sample_weight区别说明
2020/05/23 Python
Keras设置以及获取权重的实现
2020/06/19 Python
de Bijenkorf比利时官网:荷兰最知名的百货商店
2017/06/29 全球购物
Peter Millar官网:美国高档生活服饰品牌
2018/07/02 全球购物
会计专业毕业自荐书范文
2014/02/08 职场文书
开展党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
暑假安全保证书
2015/02/28 职场文书
Python按顺序遍历并读取文件夹中文件
2022/04/29 Python