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项目打包方法
Feb 18 PHP
php session 预定义数组
Mar 16 PHP
php mail to 配置详解
Jan 16 PHP
php向js函数传参的几种方法
Aug 10 PHP
PHP从FLV文件获取视频预览图的方法
Mar 12 PHP
PHP中的switch语句的用法实例详解
Oct 21 PHP
php强大的时间转换函数strtotime
Feb 18 PHP
PHP的Yii框架中View视图的使用进阶
Mar 29 PHP
微信利用PHP创建自定义菜单的方法
Aug 01 PHP
CI框架入门之MVC简单示例
Nov 21 PHP
thinkPHP5.0框架引入Traits功能实例分析
Mar 18 PHP
thinkphp5 redis缓存新增方法实例讲解
Mar 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
php daodb插入、更新与删除数据
2009/03/19 PHP
php 求质素(素数) 的实现代码
2011/04/12 PHP
解析php二分法查找数组是否包含某一元素
2013/05/23 PHP
基于PHP后台的Android新闻浏览客户端
2016/05/23 PHP
PHP面向对象程序设计重载(overloading)操作详解
2019/06/13 PHP
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
extjs render 用法介绍
2013/09/11 Javascript
javascript使用正则表达式检测IP地址
2014/12/03 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
2015/01/29 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
2015/11/26 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
jQuery中ajax的load()与post()方法实例详解
2016/01/05 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
2016/05/28 Javascript
第一次接触神奇的Bootstrap
2016/10/14 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
jQuery控制元素隐藏和显示
2017/03/03 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
2017/06/07 Javascript
实例详解ztree在vue项目中使用并且带有搜索功能
2018/08/24 Javascript
微信小程序时间选择插件使用详解
2018/12/28 Javascript
小程序getLocation需要在app.json中声明permission字段
2019/04/04 Javascript
Python升级提示Tkinter模块找不到的解决方法
2014/08/22 Python
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
Python实现批量检测HTTP服务的状态
2016/10/27 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
关于python下cv.waitKey无响应的原因及解决方法
2019/01/10 Python
Python matplotlib生成图片背景透明的示例代码
2019/08/30 Python
js正则匹配markdown里的图片标签的实现
2021/03/24 Javascript
优秀学生党员先进事迹材料
2014/05/29 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
毕业证丢失证明范本
2014/09/20 职场文书
工厂标语大全
2014/10/06 职场文书
2014最新股权信托合同协议书
2014/11/18 职场文书
鸟的天堂导游词
2015/01/31 职场文书
全民创业工作总结
2015/08/13 职场文书
pycharm安装深度学习pytorch的d2l包失败问题解决
2022/03/25 Python