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 相关文章推荐
Zend Studio去除编辑器的语法警告设置方法
Oct 24 PHP
探讨如何在php168_cms中提取验证码
Jun 08 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
Jun 25 PHP
解析php下载远程图片函数 可伪造来路
Jun 25 PHP
服务器变量 $_SERVER 的深入解析
Jul 02 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
Mar 19 PHP
ThinkPHP3.1新特性之命名范围的使用
Jun 19 PHP
php与flash as3 socket通信传送文件实现代码
Aug 16 PHP
PHP并发多进程处理利器Gearman使用介绍
May 16 PHP
php封装的smartyBC类完整实例
Oct 19 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
Jul 10 PHP
PHP sdk实现在线打包代码示例
Dec 09 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获取当前网址及域名的实现代码
2013/06/23 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
对Jquery中的ajax再封装,简化操作示例
2014/02/12 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
2015/04/01 Javascript
轻松实现jquery手风琴效果
2016/01/14 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
酷炫jQuery全屏3D焦点图动画效果
2016/03/22 Javascript
jquery实现折叠菜单效果【推荐】
2017/03/08 Javascript
微信小程序三级联动地址选择器的实例代码
2017/07/12 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
node使用Mongoose类库实现简单的增删改查
2018/11/08 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
[01:21:07]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
python 域名分析工具实现代码
2009/07/15 Python
使用python提取html文件中的特定数据的实现代码
2013/03/24 Python
Python实现二分法算法实例
2015/02/02 Python
python统计文本文件内单词数量的方法
2015/05/30 Python
Python2包含中文报错的解决方法
2018/07/09 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
2019/09/15 Python
Python3打包exe代码2种方法实例解析
2020/02/17 Python
python 模拟登录B站的示例代码
2020/12/15 Python
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
加拿大便宜的隐形眼镜商店:Clearly
2016/09/15 全球购物
在浏览器端如何得到服务器端响应的XML数据
2012/11/24 面试题
幼儿园英语教学反思
2014/01/30 职场文书
我们的节日国庆活动方案
2014/08/19 职场文书
2014年导购员工作总结
2014/11/18 职场文书
神农溪导游词
2015/02/11 职场文书
团支部书记竞选稿
2015/11/21 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书
关于Javascript闭包与应用的详解
2021/04/22 Javascript
JVM钩子函数的使用场景详解
2021/08/23 Java/Android
MySQL读取JSON转换的方式
2022/03/18 MySQL