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服务-管理服务】-【安全设置】-【生成授权码】。

相关推荐
BUG研究员_6 小时前
Runnable与LCEL
开发语言·人工智能·python
正在走向自律6 小时前
使用atop工具监控Linux系统指标
linux·运维·php·实时监控·atop分析内存
牛艺翔7 小时前
C++基础
开发语言·c++
键盘会跳舞7 小时前
C++ :容器适配器stack源码级拆解
开发语言·c++··stack·先进后出
美味蛋炒饭.8 小时前
Git 版本控制(下)
开发语言·git·学习·总结·后端开发
我星期八休息8 小时前
网络编程—网络层
开发语言·前端·网络·人工智能·智能路由器
不负岁月无痕8 小时前
简单理解操作系统结构
java·linux·c语言·开发语言·c++·面试
SomeB1oody8 小时前
【RustyML入门】2.9. MeanShift
开发语言·后端·机器学习·rust·教程
萧瑟其中~9 小时前
多线程锁详解:互斥锁·自旋锁·读写锁(CAS + futex 原理)
开发语言·c++
qq_448011169 小时前
C语言中的指针函数和函数指针
java·c语言·开发语言