PHP uses POP3 to read the mailbox and receive mail instance analysis

coldplay.xixi
Release: 2023-04-09 07:18:02
forward
3002 people have browsed it

PHP uses POP3 to read the mailbox and receive mail instance analysis

Go directly to the code:

<?php
$array_values[&#39;host&#39;] = "host";
$array_values[&#39;port&#39;] = 110;
$array_values[&#39;user&#39;] = &#39;用户名&#39;;
$array_values[&#39;password&#39;] = &#39;密码&#39;;
$array_values[&#39;checkmail&#39;] = &#39;xxx@xxx.xxx&#39;;

ganji_get_test_mail($array_values);

function ganji_get_test_mail($array_values)
{
  $host = $array_values[&#39;host&#39;];
  $port = $array_values[&#39;port&#39;];
  $user = $array_values[&#39;user&#39;];
  $password = $array_values[&#39;password&#39;];
  $checkmail = $array_values[&#39;checkmail&#39;];
  $msg = &#39;&#39;;
  $return_msg = &#39;&#39;;
  // ini_set(&#39;memory_limit&#39;, &#39;80M&#39;);
  if (! ($sock = fsockopen(gethostbyname($host), $port, $errno, $errstr))) {
    exit($errno . &#39;: &#39; . $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(&#39;/^\+OK/&#39;, $msg) && ! preg_match(&#39;/^\./&#39;, $msg)) {
      $msg = preg_replace(&#39;/\ .*\r\n/&#39;, &#39;&#39;, $msg);
      array_push($all_mails, $msg);
    }
    if (preg_match(&#39;/^\./&#39;, $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(&#39;/^\./&#39;, $msg)) {
        array_push($ganji_mails, $item);
        break;
      }
    }
    continue;
  }

  $mail_content = &#39;&#39;;
  $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(&#39;/^\./&#39;, $msg)) {
        array_push($array_ganji_mails, iconv_mime_decode_headers($mail_content, 0, "UTF-8"));
        $mail_content = &#39;&#39;;
        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;
}
Copy after login

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!

Related labels:
source:jb51.net
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!