Heim > Backend-Entwicklung > PHP-Tutorial > PHP verwendet POP3, um das Postfach zu lesen und eine E-Mail-Instanzanalyse zu empfangen

PHP verwendet POP3, um das Postfach zu lesen und eine E-Mail-Instanzanalyse zu empfangen

coldplay.xixi
Freigeben: 2023-04-09 07:18:02
nach vorne
3107 Leute haben es durchsucht

PHP verwendet POP3, um das Postfach zu lesen und eine E-Mail-Instanzanalyse zu empfangen

Gehe direkt zum 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;
}
Nach dem Login kopieren

Einführung in häufig verwendete POP3-Befehle:

命令 参数 状态 描述
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 更新 退出


Verwandte Lernempfehlungen: PHP-Programmierung vom Anfänger bis zum Experten

Das obige ist der detaillierte Inhalt vonPHP verwendet POP3, um das Postfach zu lesen und eine E-Mail-Instanzanalyse zu empfangen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:jb51.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage