php pop3,PHP使用POP3读取邮箱接收邮件

1 < php2 $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 {12 $host = $array_values['host'];13 $port = $array_values['port'];14 $user = $array_values['user'];15 $password = $array_values['password'];16 $checkmail = $array_values['checkmail'];17 $msg = '';18 $return_msg = '';19 //ini_set('memory_limit', '80M');

20 if (! ($sock = fsockopen(gethostbyname($host), $port, $errno, $errstr))) {21 exit($errno . ': ' . $errstr);22 }23

24 set_socket_blocking($sock, true);25

26 $command = "USER " . $user . "

";27 fwrite($sock, $command);28 $msg = fgets($sock);29 $command = "PASS " . $password . "

";30 fwrite($sock, $command);31 $msg = fgets($sock);32

33 $command = "stat

";34 fwrite($sock, $command);35 $return_msg = fgets($sock);36

37 $msg = fgets($sock);38

39 $command = "LIST

";40 fwrite($sock, $command);41 $all_mails = array();42 while (true) {43 $msg = fgets($sock);44 if (! preg_match('/^+OK/', $msg) && ! preg_match('/^./', $msg)) {45 $msg = preg_replace('/ .*

/', '', $msg);46 array_push($all_mails, $msg);47 }48 if (preg_match('/^./', $msg))49 break;50 }51

52 //获取邮件列表

53 $ganji_mails = array();54 foreach ($all_mails as $item) {55 fwrite($sock, "TOP $item 0

");56 while (true) {57 $msg = fgets($sock);58 //echo $msg . "
";

59 if (preg_match('/^./', $msg)) {60 array_push($ganji_mails, $item);61 break;62 }63 }64 continue;65 }66

67 $mail_content = '';68 $array_ganji_mails = array();69

70 //逐行遍历

71 foreach ($ganji_mails as $item) {72 fwrite($sock, "RETR $item

");73 while (true) {74 $msg = fgets($sock);75 $mail_content .= $msg;76 if (preg_match('/^./', $msg)) {77 array_push($array_ganji_mails, iconv_mime_decode_headers($mail_content, 0, "UTF-8"));78 $mail_content = '';79 break;80 }81 }82 }83

84 //直接获取第一封邮件全部信息 9999长度

85 fwrite($sock, "RETR 1

");86 $mail_contents = fread($sock, 9999); //直接获取全部

87

88 echo "
";89 var_dump($mail_contents);90 echo "
";91

92 $command = "QUIT

";93 fwrite($sock, $command);94 $msg = fgets($sock);95

96 return $mail_contents;97 }

常用的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    更新 退出

————————————————

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
receivemail是一个专门用来接收邮件PHP类,支持POP3和IMAP等邮件协议。 可以接收邮件邮件附件。 include("receivemail.class.php"); 02 // 创建一个 reciveMail 对象 03 $obj = new receiveMail('abc@abc.com','xxxxxx','abc@abc.com','pop.abc.com','pop3','110',false); 04 // 连接到邮件服务器 05 $obj->connect(); //If connection fails give error message and exit 06 // 读取邮件数 07 $tot = $obj->getTotalMails(); //Total Mails in Inbox Return integer value 08 09 echo "收到$tot封邮件::"; 10 for($i = $tot; $i > 0; $i--) 11 { 12 $head = $obj->getHeaders($i); // 读取获取邮件头信息,返回数组 **数组键值为 (subject,to,toOth,toNameOth,from,fromName) 13 echo "主题 :: ".$head['subject'].""; 14 echo "收件人 :: ".$head['to'].""; 15 echo "抄送 :: ".$head['toOth'].""; 16 echo "发件人 :: ".$head['from'].""; 17 echo "发件人名称 :: ".$head['fromName'].""; 18 echo ""; 19 echo "*******************************************************************************************"; 20 echo $obj->getBody($i); // 邮件正文 21 $str = $obj->GetAttach($i,"./"); // 获取邮件附件,返回的文件名以逗号隔开。 例如. (mailid, Path to store file) 22 $ar = explode(",",$str); 23 foreach($ar as $key=>$value) 24 echo ($value == "") ? "" : "Atteched File :: " . $value . ""; 25 echo "------------------------------------------------------------------------------------------"; 26 //$obj->deleteMails($i); // Delete Mail from Mail box 27 } 28 $obj->close_mailbox(); //Close Mail Box
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值