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 相关文章推荐
Extended CHM PHP 语法手册之 DIY
Oct 09 PHP
MySQL授权问题总结
May 06 PHP
PHP读取txt文件的内容并赋值给数组的代码
Nov 03 PHP
smarty半小时快速上手入门教程
Oct 27 PHP
php中cookie实现二级域名可访问操作的方法
Nov 11 PHP
IIS下PHP的三种配置方式对比
Nov 20 PHP
php生成数字字母的验证码图片
Jul 14 PHP
ThinkPHP中使用Ueditor富文本编辑器
Sep 02 PHP
Yii实现的多级联动下拉菜单
Jul 13 PHP
thinkPHP中session()方法用法详解
Dec 08 PHP
PHP中for循环与foreach的区别
Mar 06 PHP
PHP开发api接口安全验证操作实例详解
Mar 26 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后台多用户权限组思路与实现程序代码分享
2012/02/13 PHP
php动态生成函数示例
2014/03/21 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
2014/07/01 PHP
js+php实现静态页面实时调用用户登陆状态的方法
2015/01/04 PHP
PHP基本语法实例总结
2016/09/09 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
php和nginx交互实例讲解
2019/09/24 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
jQuery实现渐变弹出层和弹出菜单的方法
2015/02/20 Javascript
javascript实现任务栏消息提示的简单实例
2016/05/31 Javascript
Bootstrap Modal遮罩弹出层(完整版)
2016/11/21 Javascript
Vue监听数组变化源码解析
2017/03/09 Javascript
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
分析JavaScript数组操作难点
2017/12/18 Javascript
javascript 设计模式之组合模式原理与应用详解
2020/04/08 Javascript
JS指定音频audio在某个时间点进行播放
2020/11/28 Javascript
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python Web框架Pylons中使用MongoDB的例子
2013/12/03 Python
python使用beautifulsoup从爱奇艺网抓取视频播放
2014/01/23 Python
python抓取网页图片示例(python爬虫)
2014/04/27 Python
python任务调度实例分析
2015/05/19 Python
5种Python单例模式的实现方式
2016/01/14 Python
pycharm中连接mysql数据库的步骤详解
2017/05/02 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
详解python3 + Scrapy爬虫学习之创建项目
2019/04/12 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
美国知名日用品连锁超市:Dollar General(多来店)
2017/01/14 全球购物
如何用Java实现列出某个目录下的所有子目录
2015/07/20 面试题
外贸采购员求职的自我评价
2013/11/26 职场文书
表扬通报怎么写
2015/01/16 职场文书
监察建议书
2015/02/04 职场文书
2015年实习单位评语
2015/03/25 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
php微信小程序解包过程实例详解
2021/03/31 PHP
MySQL复制问题的三个参数分析
2021/04/07 MySQL
Python实现科学占卜 让视频自动打码
2022/04/09 Python