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 根据IP地址控制访问的代码
Apr 22 PHP
PHP导入Excel到MySQL的方法
Apr 23 PHP
php小经验:解析preg_match与preg_match_all 函数
Jun 29 PHP
Ajax+PHP快速上手及简单应用说明
Jul 24 PHP
php下Memcached入门实例解析
Jan 05 PHP
PHP网络操作函数汇总
May 18 PHP
Symfony实现行为和模板中取得request参数的方法
Mar 17 PHP
Composer设置忽略版本匹配的方法
Apr 27 PHP
Yii使用smsto短信接口的函数demo示例
Jul 13 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
彻底搞懂PHP 变量结构体
Oct 11 PHP
Laravel框架源码解析之模型Model原理与用法解析
May 14 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使用NuSOAP调用Web服务的方法
2015/07/18 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
one.php 多项目、函数库、类库 统一为一个版本的方法
2020/08/24 PHP
js的event详解。
2006/09/06 Javascript
javascript开发中因空格引发的错误
2010/11/08 Javascript
DWZ刷新dialog解决方法
2013/03/03 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
AngularJS语法详解(续)
2015/01/23 Javascript
javascript如何写热点图
2015/12/08 Javascript
JS中数组重排序方法
2016/11/11 Javascript
利用jquery实现下拉框的禁用与启用
2016/12/07 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
2017/06/14 Javascript
React-Native中禁用Navigator手势返回的示例代码
2017/09/09 Javascript
解决vue接口数据赋值给data没有反应的问题
2018/08/27 Javascript
Vue——前端生成二维码的示例
2020/12/19 Vue.js
python3如何将docx转换成pdf文件
2018/03/23 Python
详解pyppeteer(python版puppeteer)基本使用
2019/06/12 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
Pycharm最常用的快捷键及使用技巧
2020/03/05 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
Django ORM filter() 的运用详解
2020/05/14 Python
Python中pass的作用与使用教程
2020/11/13 Python
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
高街生活方式全球在线商店:AZBRO
2017/08/26 全球购物
Waterford英国官方网站:世界上最受欢迎的优质水晶品牌
2019/08/17 全球购物
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
电子商务专业实习生自我鉴定
2013/09/24 职场文书
团日活动策划书
2014/02/01 职场文书
毕业留言寄语大全
2014/04/10 职场文书
医院标语大全
2014/06/23 职场文书
新疆民族团结演讲稿
2014/08/27 职场文书
龙门石窟导游词
2015/02/02 职场文书
Python绘制地图神器folium的新人入门指南
2021/05/23 Python
Win11跳过联网界面创建本地管理账户的3种方法
2022/04/20 数码科技
MYSQL如何查看操作日志详解
2022/05/30 MySQL