php导出163邮箱地址列表

  在sns应用中,经常会有通过邮件邀请朋友这个功能。在这里面,得到邮件地址列表很关键。下面是我写的一个获取163邮件地址列表的类。或去其他邮箱的方法大致相同。
<?php
/**
 * get address list from 163 mail box
 */
define( "COOKIEJAR", tempnam( "/tmp", "cookie" ) );

class adrSnatcher
{
  /**
    * @desc: login in the 163 mail box
    * @param string $username
    * @param string $password
    * @return int  //the login status
    */
    function login( $username, $password )
    {
        $ch = curl_init( );
        
        curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
        curl_setopt( $ch, CURLOPT_URL, "https://reg.163.com/logins.jsp" );
        curl_setopt( $ch, CURLOPT_POST, 1 );
        curl_setopt( $ch, CURLOPT_POSTFIELDS, "username=".$username."&password=".$password."&type=1" );
        curl_setopt( $ch, CURLOPT_COOKIEJAR, COOKIEJAR );
        curl_setopt( $ch, CURLOPT_TIMEOUT, TIMEOUT );
        
        ob_start( );
        curl_exec( $ch );
        $contents = ob_get_contents( );
        ob_end_clean( );
        curl_close( $ch );

        if ( strpos( $contents, "安全退出" ) !== false )
        {
            return 0;
        }
        
        return 1;
    }

  /**
    * @desc: get address list from mail box
    * @param string $username
    * @param string $password
    * @return array  //the address list
    */
    function getAddressList( $username, $password)
    {
        if ( !$this->login( $username, $password ) )
        {
            return 0;
        }
        
        $this-&gt;_getcookie();
        $cookies = $this-&gt;_readcookies( COOKIEJAR);
        $cookieid = substr( trim( $cookies['Coremail'] ), -32 );
        if ( !$cookieid )
        {
            return 0;
        }
        
        //get the address list page information
        $ch = curl_init( );
        curl_setopt( $ch, CURLOPT_URL, "http://cg5a85.mail.163.com/a/s?sid=".$cookieid."&func=global:sequential" );
        curl_setopt( $ch, CURLOPT_COOKIEFILE, COOKIEJAR );
        curl_setopt( $ch, CURLOPT_HTTPHEADER, array( "Content-Type: application/xml" ) );
        $str = "<?xml version=/"1.0/"?><object><array name=/"items/"><object><string name=/"func/">pab:searchContacts</string>" .
               "<object name=/"var/"><array name=/"order/"><object><string name=/"field/">FN</string><boolean name=/"ignoreCase/">true</boolean></object>" .
               "</array></object></object><object><string name=/"func/">user:getSignatures</string></object>" .
               "<object><string name=/"func/">pab:getAllGroups</string></object></array></object>";
        curl_setopt( $ch, CURLOPT_POST, 1 );
        curl_setopt( $ch, CURLOPT_POSTFIELDS, $str );
        curl_setopt( $ch, CURLOPT_TIMEOUT, TIMEOUT );
        ob_start( );
        curl_exec( $ch );
        $contents = ob_get_contents( );
        ob_end_clean( );
        curl_close( $ch );
        
        //get mail list from the page information
        $pattern = "/([//w_-])+@([//w])+([//w.]+)/";
        if ( preg_match_all( $pattern, $contents, $tmpres, PREG_PATTERN_ORDER ) )
        {
            $result = array_unique( $tmpres[0] );
        }
        
        return $result;
    }

  /**
    * get cookie
    */
    function _getcookie( )
    {
        $ch = curl_init( );
        curl_setopt( $ch, CURLOPT_URL, "http://fm163.163.com/coremail/fcg/ntesdoor2?verifycookie=1&lightweight=1" );
        curl_setopt( $ch, CURLOPT_COOKIEFILE, COOKIEJAR );
        curl_setopt( $ch, CURLOPT_COOKIEJAR, COOKIEJAR );
        ob_start( );
        curl_exec( $ch );
        $contents = ob_get_contents( );
        ob_end_clean( );
        curl_close( $ch );
    }
    
    
    /**
      * get cookie from file
      */
    function _readcookies( $file)
    {
        $result = null;
        
        $fp = fopen( $file, "r" );
        if($fp)
        {
            while ( !feof( $fp ) )
          {
              $buffer = fgets( $fp, 4096 );
              $tmp = split( "/t", $buffer );
              $result[trim( $tmp[5] )] = trim( $tmp[6] );
          }
          
          fclose($fp);
        }
        
        return $result;
    }

}

?>

调用:
<?php
  require_once("adrsnatcher.class.php");
 
  $username = "xxxxxx";
  $password = "xxxxxx";
 
  $asn = new adrSnatcher();
  $addresslist = $asn->getAddressList($username, $password);
  var_dump($addresslist);

?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值