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下使用curl模拟用户登陆的代码
Sep 10 PHP
基于MySQL到MongoDB简易对照表的详解
Jun 03 PHP
改写函数实现PHP二维/三维数组转字符串
Sep 13 PHP
php inc文件使用的风险和注意事项
Nov 12 PHP
php查询mysql数据库并将结果保存到数组的方法
Mar 18 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
Jan 11 PHP
使用php实现网站验证码功能【推荐】
Feb 09 PHP
php查询及多条件查询
Feb 26 PHP
php简单中奖算法(实例)
Aug 15 PHP
使用Zookeeper分布式部署PHP应用程序
Mar 15 PHP
PHP7 安装event扩展的实现方法
Oct 08 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 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学习之 认清变量的作用范围
2010/01/26 PHP
php+ajax注册实时验证功能
2016/07/20 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
PHP大文件及断点续传下载实现代码
2020/08/18 PHP
Extjs Label的 fieldLabel和html属性值对齐的方法
2014/06/15 Javascript
JavaScript的内存释放问题详解
2015/01/21 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
2015/05/01 Javascript
JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
2015/11/15 Javascript
Javascript基础教程之比较null和undefined值
2016/05/16 Javascript
vue实现导航栏效果(选中状态刷新不消失)
2017/12/13 Javascript
详解babel升级到7.X采坑总结
2019/05/12 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
2019/09/19 Javascript
JavaScript实现文件下载并重命名代码实例
2019/12/12 Javascript
新手该如何学python怎么学好python?
2008/10/07 Python
Python统计列表中的重复项出现的次数的方法
2014/08/18 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
python对json的相关操作实例详解
2017/01/04 Python
Pycharm 设置自定义背景颜色的图文教程
2018/05/23 Python
解决Django的request.POST获取不到内容的问题
2018/05/28 Python
python+PyQT实现系统桌面时钟
2020/06/16 Python
python中sympy库求常微分方程的用法
2020/04/28 Python
python获取本周、上周、本月、上月及本季的时间代码实例
2020/09/08 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
详解通过变换矩阵实现canvas的缩放功能
2019/01/14 HTML / CSS
护理专业自我鉴定
2014/01/30 职场文书
体育课外活动总结
2014/07/08 职场文书
办理信用卡工作证明
2014/09/30 职场文书
离婚协议书怎么写2014
2014/09/30 职场文书
夫妻婚内购房协议书
2014/10/05 职场文书
化工厂员工工作总结
2015/10/15 职场文书
2016重阳节红领巾广播稿
2015/12/18 职场文书
2019最新公司租房合同(例文)
2019/07/18 职场文书
解决golang结构体tag编译错误的问题
2021/05/02 Golang
Python爬虫实战之爬取京东商品数据并实实现数据可视化
2021/06/07 Python