php邮箱接收代码,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‘] = [email protected];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 . "\r\n";27 fwrite($sock, $command);28 $msg = fgets($sock);29 $command = "PASS " . $password . "\r\n";30 fwrite($sock, $command);31 $msg = fgets($sock);32

33 $command = "stat\r\n";34 fwrite($sock, $command);35 $return_msg = fgets($sock);36

37 $msg = fgets($sock);38

39 $command = "LIST\r\n";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(‘/\ .*\r\n/‘, ‘‘, $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\r\n");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\r\n");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\r\n");86 $mail_contents = fread($sock, 9999); //直接获取全部

87

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

92 $command = "QUIT\r\n";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    更新 退出

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

原文:https://www.cnblogs.com/crxis/p/12844850.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值