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 错误之引号中使用变量
May 04 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
Jul 19 PHP
php的XML文件解释类应用实例
Sep 22 PHP
浅析php创建者模式
Nov 25 PHP
php中heredoc与nowdoc介绍
Dec 25 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
Feb 12 PHP
php中 $$str 中 &quot;$$&quot; 的详解
Jul 06 PHP
php实现word转html的方法
Jan 22 PHP
php处理单文件、多文件上传代码分享
Aug 24 PHP
mysql alter table命令修改表结构实例详解
Sep 24 PHP
php使用fullcalendar日历插件详解
Mar 06 PHP
关于PHP数组迭代器的使用方法实例
Nov 17 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表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
关于PHP内置的字符串处理函数详解
2017/02/04 PHP
php删除二维数组中的重复值方法
2018/03/12 PHP
如何解决PHP获取不到SESSION信息之一般情况
2019/10/10 PHP
用javascript getComputedStyle获取和设置style的原理
2008/10/10 Javascript
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
2016/07/01 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
Vue父子模版传值及组件传值的三种方法
2017/11/27 Javascript
基于Vue2.X的路由和钩子函数详解
2018/02/09 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
python根据日期返回星期几的方法
2015/07/06 Python
python使用MySQLdb访问mysql数据库的方法
2015/08/03 Python
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
ubuntu中配置pyqt4环境教程
2017/12/27 Python
利用python 更新ssh 远程代码 操作远程服务器的实现代码
2018/02/08 Python
完美解决安装完tensorflow后pip无法使用的问题
2018/06/11 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
PyQt5多线程防卡死和多窗口用法的实现
2020/09/15 Python
CSS3实现的炫酷菜单代码分享
2015/03/12 HTML / CSS
css3旋转木马_动力节点Java学院整理
2017/07/12 HTML / CSS
意大利团购网站:Groupon意大利
2016/10/11 全球购物
化工专业个人的求职信范文
2013/11/28 职场文书
生日寿星公答谢词
2015/09/29 职场文书
《女娲补天》教学反思
2016/02/20 职场文书
关于html选择框创建占位符的问题
2021/06/09 HTML / CSS
python 中yaml文件用法大全
2021/07/04 Python