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设计模式 Observer(观察者模式)
Jun 26 PHP
PHP递归算法的详细示例分析
Feb 19 PHP
探讨fckeditor在Php中的配置详解
Jun 08 PHP
php+mysqli实现批量替换数据库表前缀的方法
Dec 29 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
Jan 09 PHP
PHP将进程作为守护进程的方法
Mar 19 PHP
PHP中使用hidef扩展代替define提高性能
Apr 09 PHP
php中memcache 基本操作实例
May 17 PHP
PHP语法小结之基础和变量
Nov 22 PHP
CodeIgniter框架基本增删改查操作示例
Mar 23 PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 PHP
Thinkphp 3.2框架使用Redis的方法详解
Oct 24 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
从零开始学YII2框架(六)高级应用程序模板
2014/08/20 PHP
scrollWidth,clientWidth,offsetWidth的区别
2015/01/13 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
JavaScript实现的浮动层框架用法实例分析
2015/10/10 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
2016/04/12 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
JS正则表达式验证密码格式的集中情况总结
2017/02/23 Javascript
微信小程序五星评分效果实现代码
2017/04/06 Javascript
webpack+vue中使用别名路径引用静态图片地址
2017/11/20 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
vue.js+element-ui动态配置菜单的实例
2018/09/07 Javascript
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
原生JS封装拖动验证滑块的实现代码示例
2020/06/01 Javascript
使用Taro实现小程序商城的购物车功能模块的实例代码
2020/06/05 Javascript
Python提取网页中超链接的方法
2016/09/18 Python
在centos7中分布式部署pyspider
2017/05/03 Python
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
Python视频爬虫实现下载头条视频功能示例
2018/05/07 Python
python实现决策树分类(2)
2018/08/30 Python
python 实现敏感词过滤的方法
2019/01/21 Python
PowerBI和Python关于数据分析的对比
2019/07/11 Python
解决django-xadmin列表页filter关联对象搜索问题
2019/11/15 Python
Python中six模块基础用法
2019/12/08 Python
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
HTML5在线预览PDF的示例代码
2017/09/14 HTML / CSS
大学生冰淇淋店商业计划书
2014/01/14 职场文书
高中体育教学反思
2014/01/29 职场文书
五一口号
2014/06/19 职场文书
学习焦裕禄观后感
2015/06/09 职场文书
自荐信大全
2019/03/21 职场文书
2019年年中工作总结讲话稿模板
2019/03/25 职场文书
Go gorilla/sessions库安装使用
2022/08/14 Golang