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开发需要注意的安全问题
Sep 01 PHP
在PHP中使用curl_init函数的说明
Nov 02 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
Jul 03 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
Feb 18 PHP
php生成验证码函数
Oct 20 PHP
PHP常用的小程序代码段
Nov 14 PHP
详解PHP的Yii框架中自带的前端资源包的使用
Mar 31 PHP
yum命令安装php7和相关扩展
Jul 04 PHP
PHP中静态变量的使用方法实例分析
Dec 01 PHP
laravel框架关于搜索功能的实现
Mar 15 PHP
PHP实现微信退款功能
Oct 02 PHP
phpMyAdmin通过密码漏洞留后门文件
Nov 20 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
239军机修复记
2021/03/02 无线电
PHP4实际应用经验篇(9)
2006/10/09 PHP
php trim 去除空字符的定义与语法介绍
2010/05/31 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
2011/07/03 PHP
laravel安装zend opcache加速器教程
2015/03/02 PHP
PHP实现动态执行代码的方法
2016/03/25 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
Prototype使用指南之string.js
2007/01/10 Javascript
JavaScript函数、方法、对象代码
2008/10/29 Javascript
浅谈JavaScript实现面向对象中的类
2014/12/09 Javascript
JS实现从表格中动态删除指定行的方法
2015/03/31 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
JS实现搜索框文字可删除功能
2016/12/28 Javascript
JS实现touch 点击滑动轮播实例代码
2017/01/19 Javascript
vue路由传参页面刷新参数丢失问题解决方案
2019/10/08 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
vue接通后端api以及部署到服务器操作
2020/08/13 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
python根据list重命名文件夹里的所有文件实例
2018/10/25 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
2019/07/08 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
澳大利亚药房在线:ThePharmacy
2017/10/04 全球购物
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
超市营业员求职简历的自我评价
2013/10/17 职场文书
中学家长会邀请函
2014/01/17 职场文书
电子商务个人职业生涯规划范文
2014/02/12 职场文书
根叔历年演讲稿
2014/05/20 职场文书
施工质量承诺书范文
2014/05/30 职场文书
敬老院献爱心活动总结
2014/07/08 职场文书
2014普法依法治理工作总结
2014/12/18 职场文书
《黄山奇石》教学反思
2016/02/18 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书
设置IIS Express并发数
2022/07/07 Servers