php 读取邮件内容,PHP使用POP3读取邮箱接收邮件的实例解析

d901e17f5a4209e45a2ee49f8c175980.png

直接上代码:<?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 . "

";

fwrite($sock, $command);

$msg = fgets($sock);

$command = "PASS " . $password . "

";

fwrite($sock, $command);

$msg = fgets($sock);

$command = "stat

";

fwrite($sock, $command);

$return_msg = fgets($sock);

$msg = fgets($sock);

$command = "LIST

";

fwrite($sock, $command);

$all_mails = array();

while (true) {

$msg = fgets($sock);

if (! preg_match('/^+OK/', $msg) && ! preg_match('/^./', $msg)) {

$msg = preg_replace('/ .*

/', '', $msg);

array_push($all_mails, $msg);

}

if (preg_match('/^./', $msg))

break;

}

// 获取邮件列表

$ganji_mails = array();

foreach ($all_mails as $item) {

fwrite($sock, "TOP $item 0

");

while (true) {

$msg = fgets($sock);

// echo $msg . "
";

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

");

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

");

$mail_contents = fread($sock, 9999); // 直接获取全部

echo "
";

var_dump($mail_contents);

echo "
";

$command = "QUIT

";

fwrite($sock, $command);

$msg = fgets($sock);

return $mail_contents;

}

常用的POP3命令介绍 :命令参数状态描述

USERusername认可此命令与下面的pass命令若成功,将导致状态转换

PASSpassword认可

APOPName,Digest认可Digest是MD5消息摘要

STATNone处理请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数

UIDL[Msg#]处理返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的

LIST[Msg#]处理返回邮件数量和每个邮件的大小

RETR[Msg#]处理返回由参数标识的邮件的全部文本

DELE[Msg#]处理服务器将由参数标识的邮件标记为删除,由quit命令执行

RSETNone处理服务器将重置所有标记为删除的邮件,用于撤消DELE命令

TOP[Msg#]处理服务器将返回由参数标识的邮件前n行内容,n必须是正整数

NOOPNone处理服务器返回一个肯定的响应,不做任何操作。

QUITNone更新退出

相关学习推荐:PHP编程从入门到精通

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值