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生成文件
Jan 15 PHP
php 获取本机外网/公网IP的代码
May 09 PHP
zen cart新进商品的随机排序修改方法
Sep 10 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
May 29 PHP
PHP 第三节 变量介绍
Apr 28 PHP
PHP-redis中文文档介绍
Feb 07 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
Jul 01 PHP
php带抄送和密件抄送的邮件发送方法
Mar 20 PHP
php简单获取文件扩展名的方法
Mar 24 PHP
PHP MYSQL简易交互式站点开发
Dec 27 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
Apr 10 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
Windows中使用计划任务自动执行PHP程序实例
2014/05/09 PHP
PHP实现文件下载断点续传详解
2014/10/15 PHP
PHP并发多进程处理利器Gearman使用介绍
2016/05/16 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
写js时遇到的一些小问题
2010/12/06 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
JS中实现简单Formatter函数示例代码
2014/08/19 Javascript
jQuery实现自定义事件的方法
2015/04/17 Javascript
JS实现的论坛Ajax打分效果完整实例
2015/10/31 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
2020/04/20 Javascript
AngularJS入门教程之与服务器(Ajax)交互操作示例【附完整demo源码下载】
2016/11/02 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
vue使用Axios做ajax请求详解
2017/06/07 Javascript
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
Vue中正确使用jQuery的方法
2017/10/30 jQuery
Vue仿支付宝支付功能
2018/05/25 Javascript
Vue路由钩子之afterEach beforeEach的区别详解
2018/07/15 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
[01:15:18]2014 DOTA2国际邀请赛中国区预选赛 LGD VS Speed Gaming.cn
2014/05/22 DOTA
Python smtplib实现发送邮件功能
2018/05/22 Python
Python中常用的8种字符串操作方法
2019/05/06 Python
最小二乘法及其python实现详解
2020/02/24 Python
Python新手如何理解循环加载模块
2020/05/29 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
HTML5中新标签和常用标签详解
2014/03/07 HTML / CSS
财务人员个人求职信范文
2013/12/04 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
生产车间标语
2014/06/11 职场文书
交通局领导班子群众路线教育实践活动对照检查材料思想汇报
2014/10/09 职场文书
小学生思想品德评语
2014/12/31 职场文书
高中生思想道德自我评价
2015/03/09 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
Flask response响应的具体使用
2021/07/15 Python
create-react-app开发常用配置教程
2022/06/25 Javascript