PHP使用POP3读取邮箱接收邮件
2021-03-11 04:30
标签:reg 会话 成功 man val open content continue headers 常用的POP3命令介绍 : PHP使用POP3读取邮箱接收邮件 标签:reg 会话 成功 man val open content continue headers 原文地址:https://www.cnblogs.com/crxis/p/12844850.html 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 {
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 }
命令 参数 状态 描述
------------------------------------------
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 更新 退出
————————————————
上一篇:HTML&CSS
下一篇:JS模态对话框