PHP使用POP3读取邮箱接收邮件的示例代码


Posted in PHP onJuly 08, 2020

直接上代码:

<?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;
}

常用的POP3命令介绍 :

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

以上就是PHP使用POP3读取邮箱接收邮件的示例代码的详细内容,更多关于PHP读取邮箱接收邮件的资料请关注三水点靠木其它相关文章!

PHP 相关文章推荐
php 缩略图实现函数代码
Jun 23 PHP
wamp下修改mysql访问密码的解决方法
May 07 PHP
php获取apk包信息的方法
Aug 15 PHP
php获取指定日期之间的各个周和月的起止时间
Nov 24 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
Dec 19 PHP
简单的pgsql pdo php操作类实现代码
Aug 25 PHP
PHP基于IMAP收取邮件的方法示例
Aug 07 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
Mar 21 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
Feb 21 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
Apr 26 PHP
PHP后门隐藏的一些技巧总结
Nov 04 PHP
phpmyadmin在宝塔面板里进不去的解决方案
Jul 06 #PHP
详解PHP中的8个魔术常量
Jul 06 #PHP
php 利用socket发送GET,POST请求的实例代码
Jul 04 #PHP
PHP实现递归的三种方法
Jul 04 #PHP
laravel开发环境homestead搭建过程详解
Jul 03 #PHP
PHP7原生MySQL数据库操作实现代码
Jul 03 #PHP
PHP 超级全局变量相关总结
Jun 30 #PHP
You might like
用在PHP里的JS打印函数
2006/10/09 PHP
Windows PHP5和Apache的安装与配置
2009/06/08 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
完美实现wordpress禁止文章修订和自动保存的方法
2014/11/03 PHP
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
禁止直接访问php文件代码分享
2020/05/05 PHP
jQuery+ajax实现顶一下,踩一下效果
2010/07/17 Javascript
jQuery操作select下拉框的text值和value值的方法
2014/05/31 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
深入分析JSON编码格式提交表单数据
2015/06/25 Javascript
JS实现仿PS的调色板效果完整实例
2016/12/21 Javascript
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
CentOS环境中MySQL修改root密码方法
2018/01/07 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
2018/09/07 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
wxPython学习之主框架实例
2014/09/28 Python
详解Python函数作用域的LEGB顺序
2016/05/14 Python
python GUI实例学习
2017/11/21 Python
Tensorflow卷积神经网络实例
2018/05/24 Python
使用NumPy和pandas对CSV文件进行写操作的实例
2018/06/14 Python
pytorch索引查找 index_select的例子
2019/08/18 Python
Python序列对象与String类型内置方法详解
2019/10/22 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
python 绘制国旗的示例
2020/09/27 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
2020/11/02 Python
Sneaker Studio乌克兰:购买运动鞋
2018/03/26 全球购物
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
英国鲜花递送:Blossoming Gifts
2020/07/10 全球购物
行政助理的岗位职责
2014/02/18 职场文书
大学生2014全国两会学习心得体会
2014/03/10 职场文书
技术员个人工作总结
2015/03/03 职场文书
离职告别感言
2015/08/04 职场文书
导游词之蓬莱长岛
2019/12/17 职场文书
Redis做数据持久化的解决方案及底层原理
2021/07/15 Redis