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实现链结人气统计
Oct 09 PHP
PHP CURL模拟GET及POST函数代码
Apr 25 PHP
数组与类使用PHP的可变变量名需要的注意的问题
Jun 20 PHP
使用PHP强制下载PDF文件示例
Jan 17 PHP
实现获取http内容的php函数分享
Feb 16 PHP
php实现telnet功能示例
Apr 08 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
Aug 08 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
Aug 18 PHP
php中session与cookie的比较
Jan 27 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
Jul 21 PHP
php之可变函数的实例详解
Sep 13 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
Sep 28 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
oracle资料库函式库
2006/10/09 PHP
GBK的页面输出JSON格式的php函数
2010/02/16 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
php+html5+ajax实现上传图片的方法
2016/05/14 PHP
PHP实现的简单操作SQLite数据库类与用法示例
2017/06/19 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
js+xml生成级联下拉框代码
2012/07/24 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
2014/03/07 Javascript
js简单实现点击左右运动的方法
2015/04/10 Javascript
JS中改变this指向的方法(call和apply、bind)
2016/03/26 Javascript
使用vue编写一个点击数字计时小游戏
2016/08/31 Javascript
Node.js的基本知识简单汇总
2016/09/19 Javascript
使用JavaScript为一张图片设置备选路径的方法
2017/01/04 Javascript
原生JS实现跑马灯效果
2017/02/20 Javascript
JS二叉树的简单实现方法示例
2017/04/05 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
2017/07/15 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
ZK中使用JS读取客户端txt文件内容问题
2019/11/07 Javascript
详解Vue.js 响应接口
2020/07/04 Javascript
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
再谈Python中的字符串与字符编码(推荐)
2016/12/14 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
2019/09/15 Python
python 上下文管理器及自定义原理解析
2019/11/19 Python
Pymysql实现往表中插入数据过程解析
2020/06/02 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
使用pandas实现筛选出指定列值所对应的行
2020/12/13 Python
python 实现逻辑回归
2020/12/30 Python
设计毕业生简历中的自我评价
2013/10/01 职场文书
文科毕业生自荐书范文
2014/04/17 职场文书
信息与工商管理职业规划范文:为梦想而搏击
2014/09/11 职场文书
2014年财务部工作总结
2014/11/11 职场文书
逃课检讨书怎么写
2015/01/01 职场文书
《比的意义》教学反思
2016/02/18 职场文书
python神经网络编程之手写数字识别
2021/05/08 Python