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实现用户认证及管理完全源码
Mar 11 PHP
php后台如何避免用户直接进入方法实例
Oct 15 PHP
PHP整数取余返回负数的相关解决方法
May 15 PHP
PHP 导出Excel示例分享
Aug 18 PHP
php抽象类使用要点与注意事项分析
Feb 09 PHP
php发送邮件的问题详解
Jun 22 PHP
必须收藏的23个php实用代码片段
Feb 02 PHP
PHP的时间戳与具体时间转化的简单实现
Jun 13 PHP
利用PHPExcel实现Excel文件的写入和读取
Apr 26 PHP
PHP中关键字interface和implements详解
Jun 14 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
Jun 12 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 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全概率运算函数(优化版) Webgame开发必备
2011/07/04 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
javascript 同时在IE和FireFox获取KeyCode的代码
2010/02/07 Javascript
由Javascript实现的页面日历
2011/11/04 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
jquery制作漂亮的弹出层提示消息特效
2014/12/23 Javascript
HTML5之WebSocket入门3 -通信模型socket.io
2015/08/21 Javascript
使用jQuery+EasyUI实现CheckBoxTree的级联选中特效
2015/12/06 Javascript
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
详解原生js实现offset方法
2017/06/15 Javascript
vue综合组件间的通信详解
2017/11/06 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
2020/05/21 Javascript
vue导入.md文件的步骤(markdown转HTML)
2020/12/31 Vue.js
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
Python抓取京东图书评论数据
2014/08/31 Python
python使用clear方法清除字典内全部数据实例
2015/07/11 Python
Python中如何优雅的合并两个字典(dict)方法示例
2017/08/09 Python
Python实战小程序利用matplotlib模块画图代码分享
2017/12/09 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
python write无法写入文件的解决方法
2019/01/23 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
selenium+Chrome滑动验证码破解二(某某网站)
2019/12/17 Python
CSS3的Border-radius轻松制作圆角
2012/12/24 HTML / CSS
夜大毕业自我鉴定
2013/10/11 职场文书
开展党的群众路线教育实践活动总结报告
2014/10/31 职场文书
城管个人总结
2015/02/28 职场文书
2015年征兵工作总结
2015/07/23 职场文书
四则混合运算教学反思
2016/02/23 职场文书
Python OpenCV实现传统图片格式与base64转换
2021/06/13 Python
浅析NIO系列之TCP
2021/06/15 Java/Android
Windows 11上手初体验:任务栏和开始菜单等迎来大改
2021/11/21 数码科技
一起来看看Vue的核心原理剖析
2022/03/24 Vue.js