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 相关文章推荐
Search Engine Friendly的URL设计
Oct 09 PHP
杏林同学录(二)
Oct 09 PHP
怎么在Windows系统中搭建php环境
Aug 31 PHP
php json_encode值中大括号与花括号区别
Sep 30 PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
May 10 PHP
PHP变量赋值、代入给JavaScript中的变量
Jun 29 PHP
深入浅析PHP7.0新特征(五大新特征)
Oct 29 PHP
PHP类型约束用法示例
Sep 28 PHP
php 判断字符串编码是utf-8 或gb2312实例
Nov 01 PHP
微信公众号开发之获取位置信息php代码
Jun 13 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
Oct 16 PHP
PHP yield关键字功能与用法分析
Jan 03 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
2006/12/13 PHP
php下统计用户在线时间的一种尝试
2010/08/26 PHP
PHP与C#分别格式化文件大小的代码
2011/05/14 PHP
php从给定url获取文件扩展名的方法
2015/03/14 PHP
jquery中ajax学习笔记4
2011/10/16 Javascript
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
JavaScript字符串String和Array操作的有趣方法
2012/12/18 Javascript
JS 实现Json查询的方法实例
2013/04/12 Javascript
javascript中cookie对象用法实例分析
2015/01/30 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
2016/11/22 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
值得分享和收藏的xmlplus组件学习教程
2017/05/05 Javascript
vue如何根据网站路由判断页面主题色详解
2018/11/02 Javascript
JavaScript this在函数中的指向及实例详解
2019/10/14 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
2020/08/07 jQuery
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
Python简单实现区域生长方式
2020/01/16 Python
Python @property装饰器原理解析
2020/01/22 Python
使用python计算三角形的斜边例子
2020/04/15 Python
使用phonegap检测网络状态的方法
2017/03/30 HTML / CSS
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
德国高端单身人士交友网站:ElitePartner
2018/12/02 全球购物
环境工程求职简历的自我评价范文
2013/10/24 职场文书
教师中国梦演讲稿
2014/04/23 职场文书
生日宴会策划方案
2014/06/03 职场文书
好人好事演讲稿
2014/09/01 职场文书
卖车协议书范本4篇
2014/10/01 职场文书
2014年督导工作总结
2014/11/19 职场文书
2014年减负工作总结
2014/12/10 职场文书
2014年骨干教师工作总结
2014/12/19 职场文书
2015年音乐教师个人工作总结
2015/05/20 职场文书