Home >Backend Development >PHP Tutorial >PHP uses POP3 to read the mailbox and receive mail instance analysis
Go directly to the code:
<?php $array_values['host'] = "host"; $array_values['port'] = 110; $array_values['user'] = '用户名'; $array_values['password'] = '密码'; $array_values['checkmail'] = 'xxx@xxx.xxx'; ganji_get_test_mail($array_values); function ganji_get_test_mail($array_values) { $host = $array_values['host']; $port = $array_values['port']; $user = $array_values['user']; $password = $array_values['password']; $checkmail = $array_values['checkmail']; $msg = ''; $return_msg = ''; // ini_set('memory_limit', '80M'); if (! ($sock = fsockopen(gethostbyname($host), $port, $errno, $errstr))) { exit($errno . ': ' . $errstr); } set_socket_blocking($sock, true); $command = "USER " . $user . "\r\n"; fwrite($sock, $command); $msg = fgets($sock); $command = "PASS " . $password . "\r\n"; fwrite($sock, $command); $msg = fgets($sock); $command = "stat\r\n"; fwrite($sock, $command); $return_msg = fgets($sock); $msg = fgets($sock); $command = "LIST\r\n"; fwrite($sock, $command); $all_mails = array(); while (true) { $msg = fgets($sock); if (! preg_match('/^\+OK/', $msg) && ! preg_match('/^\./', $msg)) { $msg = preg_replace('/\ .*\r\n/', '', $msg); array_push($all_mails, $msg); } if (preg_match('/^\./', $msg)) break; } // 获取邮件列表 $ganji_mails = array(); foreach ($all_mails as $item) { fwrite($sock, "TOP $item 0\r\n"); while (true) { $msg = fgets($sock); // echo $msg . "<Br><Br>"; if (preg_match('/^\./', $msg)) { array_push($ganji_mails, $item); break; } } continue; } $mail_content = ''; $array_ganji_mails = array(); //逐行遍历 foreach ($ganji_mails as $item) { fwrite($sock, "RETR $item\r\n"); while (true) { $msg = fgets($sock); $mail_content .= $msg; if (preg_match('/^\./', $msg)) { array_push($array_ganji_mails, iconv_mime_decode_headers($mail_content, 0, "UTF-8")); $mail_content = ''; break; } } } // 直接获取第一封邮件全部信息 9999长度 fwrite($sock, "RETR 1\r\n"); $mail_contents = fread($sock, 9999); // 直接获取全部 echo "<br>"; var_dump($mail_contents); echo "<br>"; $command = "QUIT\r\n"; fwrite($sock, $command); $msg = fgets($sock); return $mail_contents; }
Introduction to commonly used POP3 commands:
Commands | Parameters | Status | Description |
USER | username | Approval | This Command and the following pass command, if successful, will result in a state transition |
PASS | password | Recognition | |
APOP | Name,Digest | Recognition | Digest is the MD5 message digest |
STAT | None | Processing | Request the server to send back statistics about the mailbox, such as the total number of messages and the total number of bytes |
UIDL | [Msg#] | Processing | Returns a unique identifier for the message, each identifier for the POP3 session will be unique |
LIST | [Msg#] | Processing | Return the number of messages and the size of each message |
RETR | [Msg#] | Processing | Return the full text of the message identified by the parameter |
DELE | [Msg#] | Processing | The server marks the email identified by the parameter for deletion, which is executed by the quit command |
RSET | None | Processing | The server will reset all messages marked for deletion, used to undo the DELE command |
TOP | [Msg#] | Processing | The server will return the first n lines of the email identified by the parameter, n must be a positive integer |
NOOP | None | Processing | The server returns a positive response and takes no action. |
QUIT | None | Update | Quit |
Related learning recommendations: PHP programming from entry to proficiency
The above is the detailed content of PHP uses POP3 to read the mailbox and receive mail instance analysis. For more information, please follow other related articles on the PHP Chinese website!