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制作静态网站的模板框架
Oct 09 PHP
第1次亲密接触PHP5(2)
Oct 09 PHP
PHP生成带有雪花背景的验证码
Oct 09 PHP
VIM中设置php自动缩进为4个空格的方法详解
Jun 14 PHP
解析php addslashes()与addclashes()函数的区别和比较
Jun 24 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
Jun 29 PHP
浅析关于PHP位运算的简单权限设计
Jun 30 PHP
PHP CURL CURLOPT参数说明(curl_setopt)
Sep 30 PHP
PHP获取当前url的具体方法全面解析
Nov 26 PHP
PHP设计模式之工厂模式实例总结
Sep 01 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 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
使用PHP制作新闻系统的思路
2006/10/09 PHP
Symfony2实现从数据库获取数据的方法小结
2016/03/18 PHP
PHP编写简单的App接口
2016/08/28 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
PHP的mysqli_select_db()函数讲解
2019/01/23 PHP
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
JS面向对象编程浅析
2011/08/28 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
JS隐藏参数post传值实例
2013/04/18 Javascript
一个简单的瀑布流效果(主体形式自写)
2013/05/27 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
Nodejs中解决cluster模块的多进程如何共享数据问题
2016/11/10 NodeJs
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
Vue.js中extend选项和delimiters选项的比较
2017/07/17 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
详解vue中v-model和v-bind绑定数据的异同
2020/08/10 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
python+Django+apache的配置方法详解
2016/06/01 Python
用python处理图片实现图像中的像素访问
2018/05/04 Python
用uWSGI和Nginx部署Flask项目的方法示例
2019/05/05 Python
Python中print函数简单使用总结
2019/08/05 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
Python对接支付宝支付自实现功能
2019/10/10 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
matplotlib之属性组合包(cycler)的使用
2021/02/24 Python
Draper James官网:知名演员瑞茜·威瑟斯彭所创品牌
2017/10/25 全球购物
学生安全教育材料
2014/02/14 职场文书
公交公司毕业生求职信
2014/02/15 职场文书
活动总结格式范文
2014/04/26 职场文书
小学语文业务学习材料
2014/06/02 职场文书
个人批评与自我批评发言稿
2014/09/28 职场文书
2014年团队工作总结
2014/11/24 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
超市员工辞职信范文
2015/05/12 职场文书
面试中canvas绘制图片模糊图片问题处理
2022/03/13 Javascript
css3应用示例:新增的选择器
2022/03/16 HTML / CSS