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 相关文章推荐
服务器web工具 php环境下
Dec 29 PHP
PHP学习笔记之三 数据库基本操作
Jan 17 PHP
使用php shell命令合并图片的代码
Jun 23 PHP
PHP获取当前页面完整URL的实现代码
Jun 10 PHP
php实现根据字符串生成对应数组的方法
Sep 22 PHP
php中cookie实现二级域名可访问操作的方法
Nov 11 PHP
php将csv文件导入到mysql数据库的方法
Dec 24 PHP
php封装db类连接sqlite3数据库的方法实例
Dec 19 PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 PHP
php微信公众号开发之现金红包
Apr 16 PHP
laravel 修改记住我功能的cookie保存时间的方法
Oct 14 PHP
Laravel 解决composer相关操作提示php相关异常的问题
Oct 23 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
咖啡的化学
2021/03/03 咖啡文化
给初学PHP的5个入手程序
2006/11/23 PHP
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
Javascript编程之继承实例汇总
2015/11/28 Javascript
JavaScript模版引擎的基本实现方法浅析
2016/02/15 Javascript
Nodejs如何搭建Web服务器
2016/03/28 NodeJs
Angular2内置指令NgFor和NgIf详解
2016/08/03 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
JavaScript实现省市县三级级联特效
2017/05/16 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
2020/04/11 Javascript
在vue中给后台接口传的值为数组的格式代码
2020/11/12 Javascript
[00:32]2018DOTA2亚洲邀请赛iG出场
2018/04/03 DOTA
[36:29]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs TNC
2018/04/02 DOTA
python中实现php的var_dump函数功能
2015/01/21 Python
Python通用循环的构造方法实例分析
2018/12/19 Python
Python3.5文件修改操作实例分析
2019/05/01 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
2019/05/31 Python
python打造爬虫代理池过程解析
2019/08/15 Python
python队列原理及实现方法示例
2019/11/27 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
jupyter 添加不同内核的操作
2021/02/06 Python
荷兰在线体育用品商店:Avantisport.nl
2018/07/04 全球购物
大二学期个人自我评价
2014/01/13 职场文书
公司庆典邀请函范文
2014/01/13 职场文书
建筑专业毕业生自荐信
2014/05/25 职场文书
解除劳动合同协议书
2014/09/17 职场文书
2014国庆黄金周超市促销活动方案
2014/09/21 职场文书
政风行风建设整改方案
2014/10/27 职场文书
幼儿园小班见习报告
2014/10/31 职场文书
幼儿园教师节感谢信
2015/01/23 职场文书
大学生思想道德自我评价
2015/03/09 职场文书