欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法

程序员文章站 2023-11-11 18:57:34
本文实例讲述了php模拟登陆163邮箱发邮件及获取通讯录列表的方法。分享给大家供大家参考。具体实现方法如下: 复制代码 代码如下:

本文实例讲述了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程序设计有所帮助。