Maison > développement back-end > tutoriel php > PHP utilise POP3 pour lire la boîte aux lettres et recevoir une analyse des instances de courrier

PHP utilise POP3 pour lire la boîte aux lettres et recevoir une analyse des instances de courrier

coldplay.xixi
Libérer: 2023-04-09 07:18:02
avant
3120 Les gens l'ont consulté

PHP utilise POP3 pour lire la boîte aux lettres et recevoir une analyse des instances de courrier

Accéder directement au 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;
}
Copier après la connexion

Introduction aux commandes POP3 couramment utilisées :

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


Recommandations d'apprentissage associées : Programmation PHP du débutant au compétent

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:jb51.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal