当前位置:首页 > PHP教程 > php应用 > 列表

PHP使用POP3读取邮箱接收邮件的示例代码

发布:smiling 来源: PHP粉丝网  添加日期:2022-03-16 15:16:29 浏览: 评论:0 

这篇文章主要介绍了PHP如何使用POP3读取邮箱接收邮件,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下。

直接上代码:

  1. <?php 
  2. $array_values['host'] = "host"
  3. $array_values['port'] = 110; 
  4. $array_values['user'] = '用户名'
  5. $array_values['password'] = '密码'
  6. $array_values['checkmail'] = 'xxx@xxx.xxx'
  7.  
  8. ganji_get_test_mail($array_values); 
  9.  
  10. function ganji_get_test_mail($array_values
  11.   $host = $array_values['host']; 
  12.   $port = $array_values['port']; 
  13.   $user = $array_values['user']; 
  14.   $password = $array_values['password']; 
  15.   $checkmail = $array_values['checkmail']; 
  16.   $msg = ''
  17.   $return_msg = ''
  18.   // ini_set('memory_limit', '80M'); 
  19.   if (! ($sock = fsockopen(gethostbyname($host), $port$errno$errstr))) { 
  20.     exit($errno . ': ' . $errstr); 
  21.   } 
  22.  
  23.   set_socket_blocking($sock, true); 
  24.  
  25.   $command = "USER " . $user . "\r\n"
  26.   fwrite($sock$command); 
  27.   $msg = fgets($sock); 
  28.   $command = "PASS " . $password . "\r\n"
  29.   fwrite($sock$command); 
  30.   $msg = fgets($sock); 
  31.  
  32.   $command = "stat\r\n"
  33.   fwrite($sock$command); 
  34.   $return_msg = fgets($sock); 
  35.  
  36.   $msg = fgets($sock); 
  37.  
  38.   $command = "LIST\r\n"
  39.   fwrite($sock$command); 
  40.   $all_mails = array(); 
  41.   while (true) { 
  42.     $msg = fgets($sock); 
  43.     if (! preg_match('/^\+OK/'$msg) && ! preg_match('/^\./'$msg)) { 
  44.       $msg = preg_replace('/\ .*\r\n/'''$msg); 
  45.       array_push($all_mails$msg); 
  46.     } 
  47.     if (preg_match('/^\./'$msg)) 
  48.       break
  49.   } 
  50.  
  51.   // 获取邮件列表 
  52.   $ganji_mails = array(); 
  53.   foreach ($all_mails as $item) { 
  54.     fwrite($sock"TOP $item 0\r\n"); 
  55.     while (true) { 
  56.       $msg = fgets($sock); 
  57.       // echo $msg . "<Br><Br>"; 
  58.       if (preg_match('/^\./'$msg)) { 
  59.         array_push($ganji_mails$item); 
  60.         break
  61.       } 
  62.     } 
  63.     continue
  64.   } 
  65.  
  66.   $mail_content = ''
  67.   $array_ganji_mails = array(); 
  68.  
  69.   //逐行遍历 
  70.   foreach ($ganji_mails as $item) { 
  71.     fwrite($sock"RETR $item\r\n"); 
  72.     while (true) { 
  73.       $msg = fgets($sock); 
  74.       $mail_content .= $msg
  75.       if (preg_match('/^\./'$msg)) { 
  76.         array_push($array_ganji_mails, iconv_mime_decode_headers($mail_content, 0, "UTF-8")); 
  77.         $mail_content = ''
  78.         break
  79.       } 
  80.     } 
  81.   } 
  82.  
  83.   // 直接获取第一封邮件全部信息 9999长度 
  84.   fwrite($sock"RETR 1\r\n"); 
  85.   $mail_contents = fread($sock, 9999); // 直接获取全部 
  86.  
  87.   echo "<br>"
  88.   var_dump($mail_contents); 
  89.   echo "<br>"
  90.  
  91.   $command = "QUIT\r\n"
  92.   fwrite($sock$command); 
  93.   $msg = fgets($sock); 
  94.  
  95.   return $mail_contents

常用的POP3命令介绍 :

命令 参数 状态 描述

USER username 认可 此命令与下面的pass命令若成功,将导致状态转换

PASS password  认可

APOP Name,Digest 认可 Digest是MD5消息摘要

STAT None 处理 请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数

UIDL [Msg#] 处理 返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的

LIST [Msg#] 处理 返回邮件数量和每个邮件的大小

RETR [Msg#] 处理 返回由参数标识的邮件的全部文本

DELE [Msg#] 处理 服务器将由参数标识的邮件标记为删除,由quit命令执行

RSET None 处理 服务器将重置所有标记为删除的邮件,用于撤消DELE命令

TOP [Msg#] 处理 服务器将返回由参数标识的邮件前n行内容,n必须是正整数

NOOP None 处理 服务器返回一个肯定的响应,不做任何操作。

QUIT None 更新 退出

Tags: POP3读取邮箱 POP3接收邮件

分享到: