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实现多服务器共享SESSION数据的方法
Mar 16 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
Jun 13 PHP
浅析php中三个等号(===)和两个等号(==)的区别
Aug 06 PHP
php中有关合并某一字段键值相同的数组合并的改进
Mar 10 PHP
php实现上传图片文件代码
Jul 19 PHP
PHP面向对象程序设计实例分析
Jan 26 PHP
php+html5+ajax实现上传图片的方法
May 14 PHP
php日期操作技巧小结
Jun 25 PHP
PHP多进程编程总结(推荐)
Jul 18 PHP
PHP简单判断手机设备的方法
Aug 23 PHP
PHP mysqli事务操作常用方法分析
Jul 22 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
Jul 06 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
php array_search() 函数使用
2010/04/13 PHP
THINKPHP内容分页代码分享
2015/01/14 PHP
PHP中数据类型转换的三种方式
2015/04/02 PHP
php表单加入Token防止重复提交的方法分析
2016/10/10 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
关于PHP5.6+版本“No input file specified”问题的解决
2019/12/11 PHP
javascript 动态设置已知select的option的value值的代码
2009/12/16 Javascript
js判断undefined变量类型使用typeof
2013/06/03 Javascript
微信小程序  audio音频播放详解及实例
2016/11/02 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
2017/05/14 Javascript
Vue列表页渲染优化详解
2017/07/24 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
vue实现在表格里,取每行的id的方法
2018/03/09 Javascript
Vue中父子组件通讯之todolist组件功能开发
2018/05/21 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
2020/08/07 Javascript
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
Python 内置函数memoryview(obj)的具体用法
2017/11/23 Python
详解小白之KMP算法及python实现
2019/04/04 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
浅谈Python程序的错误:变量未定义
2020/06/02 Python
最新Python idle下载、安装与使用教程图文详解
2020/11/28 Python
css3中用animation的steps属性制作帧动画
2019/04/25 HTML / CSS
照片礼物和装饰:MyPhoto
2019/11/02 全球购物
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
产品销售员岗位职责
2013/12/18 职场文书
员工晚婚的请假条
2014/02/08 职场文书
大学奖学金获奖感言
2014/08/15 职场文书
乡镇党员干部四风对照检查材料思想汇报
2014/09/27 职场文书
见习报告的格式
2014/11/04 职场文书
2014年内勤工作总结
2014/11/24 职场文书
Python机器学习之逻辑回归
2021/05/11 Python
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
2021/06/09 Python