background image

注释较多,看起来可能不太方便。不要紧,只要复制下面的代码,并修改相应的邮箱帐号
即可自行测试。
<!DOCTYPE   html   PUBLIC   “-//W3C//DTD   XHTML   1.0   Transitional//EN” 
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<title>第一 php

网提供的教程 IMAP 读取邮件的 demo</title>

<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8  />

</head>
<body>
<p>作者:遥远的期待</p>
<p>

<a 

href=”http://www.phptogether.com”>www.phptogether.com</a></p>
<p style=”color:red”>注意:此 demo 仅向大家介绍 IMAP 读取邮件的过程,并未对
逻辑和内容显示的细节做充分处理!请不要将其用于生产环境!</p>
<p style=”color:red”>如果运行后,无法显示内容请重复刷新,可能跟网络有关!
</p>
<?php
//打开一个到 IMAP 服务器的连接,以腾讯邮箱的 IMAP 服务器为例
$mbox = imap_open(“{imap.qq.com}”, “xxxx@qq.com”, “

你的密码 )or die(“用

户名或密码不正确 );
$len=count(imap_headers($mbox));//计算邮箱中的邮件数量,默认读取的是腾讯邮
箱首页的邮件,如何翻页读取,未能解决,希望热心网页帮忙!!!
if(intval($_GET['id'])){//如果获取了邮件 id,读取邮件正文
//腾讯邮箱的正文页面的编码是 gb18030,由于 demo 用的是 utf-8 编码,应此要做转

//imap_fetchbody 函数读取一封邮件的正文,三个参数依次是:imap_open 返回的流,
邮件 id,邮件内容的块,从 1 开始读取,复杂邮件有很多块,普通的用 1 就行了
//imap_fetchbody 函数读取的邮件内容是经过编码的,腾讯的是 base64,所以用
imap_base64 函数进行解码
//不同的邮箱使用的编码可能不同,在实际开发过程中请使用 imap_fetchstructure 函
数进行判断
$content=iconv(‘gb18030 ,’utf-8 ,imap_base64(imap_fetchbody($mbox,

$_GET['id'],1)));
//下面是对特殊字符的处理,并不严谨,这里主要是针对含有 js 以及 php 代码的内容让
它们以原样输出
if(strstr($content,’</script>’)!==false||strstr($content,’<?php’)!==false)
$content=htmlspecialchars($content);
echo ‘

正文: .$content.’<hr>’;

}else{//默认页面读取邮件列表
for($i=1;$i<=$len;$i++){
$arr=imap_headerinfo($mbox,$i);//循环读取邮件的头信息,正文之前的内容都是头,
包括发送方、接受发等,请查看 PHP 手册获取该函数的详细信息
$from=$arr->from;//读取邮件的发送方信息