PHP使用imap_open读取QQ邮箱

PHP代码:

php 复制代码
/** 
	PHP使用imap_open读取QQ邮箱
	
	imap_open 官方文档:
	https://www.php.net/function.imap_open
*/

function parse_mailstr($subject) {
	$a = explode('?',$subject);
	$n = count($a);
	$a = $a[$n-2];
	return base64_decode($a);
}

function recevie_email() {
	
	// 腾讯 QQ 邮箱为例。
	// 官方文档:https://service.mail.qq.com/detail/0/339
	$mailbox = '{imap.qq.com:993/imap/ssl}INBOX';
	
	// 要读取的邮箱
	$user = 'youremail@qq.com';
	
	// 邮箱密码或授权码。邮箱授权码生成路径如下:
	// 进入 QQ 邮箱,依次进入【设置】-【账号】-【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务-管理服务】-【安全设置】-【生成授权码】
	$password = '邮箱密码或授权码';
	
	$inbox = imap_open($mailbox, $user, $password) or die(imap_last_error());
	if ($inbox) {
		
		$numMsg = imap_num_msg($inbox);
		echo '<dt>共有 '.$numMsg.' 条未读邮件</dt>';

		for ($i = 1; $i <= $numMsg; ++$i) {
			$hd = imap_headerinfo($inbox, $i);

			$subject = parse_mailstr($hd->subject);
 
			echo '<dd>';
			echo "标  题:$subject <br />";
			echo '发件人:'. $hd->from[0]->mailbox .'@'. $hd->from[0]->host .'<br />';
			if (isset($hd->date)) {
				$date = strtotime($hd->date);
				$date = date('Y-m-d H:i:s',$date);
				echo "时 间:$date <br />";
			}
			echo '</dd>';
		}

		imap_close($inbox);
	}
}

HTML代码:

html 复制代码
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width,user-scalable=yes" />
<meta name="renderer" content="webkit" />
<style>
dd{
	border-bottom: 1px solid #888;
    padding-bottom: 10px;
    padding-top: 10px;
}
</style>
<title>PHP使用imap_open读取QQ邮箱</title>
</head>
<body>
	<dl>
		<?php recevie_email();?>
	</dl>
</body>
</html>

获得邮箱授权码方法:

进入 QQ 邮箱,依次进入【设置】-【账号】-【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务-管理服务】-【安全设置】-【生成授权码】。

相关推荐
fanruitian26 分钟前
python else用法
开发语言·python
FRing0336 分钟前
JavaScript入门到精通二十六(变量提升、函数剩余参数、展开运算符、ES6箭头函数)
开发语言·前端·javascript·es6·箭头函数
云深麋鹿39 分钟前
C++ | 基于红黑树实现mymap与myset
开发语言·c++
ITxiaobing20231 小时前
海外广告投放的 IP 定位服务怎么选?一份基于实测数据的选型参考
网络协议·tcp/ip·php
weixin_417396831 小时前
桌面云终端PXE启动失败怎么排查?从DHCP Option到镜像下发
开发语言·前端·php·技术·酒店·综合布线·弱电
某不知名網友2 小时前
ROS2进阶:服务通信、自定义SRV接口、参数服务器与基于服务的参数通信详解
java·开发语言·microsoft
java_nnnn2 小时前
LeetCode刷题滑动窗口(水果成篮+找到字符串中所有字母的异位词)Java
java·开发语言·leetcode
qetfw2 小时前
Bash 字符串处理:参数展开、序列与脚本执行方式
linux·开发语言·chrome·bash
小羊没烦恼!2 小时前
异步编程:线程概述及使用
java·开发语言·mysql·算法·c#
ServBay3 小时前
PHP 突爆 9.2 分高危漏洞,你升级了吗?
后端·php