php imap收邮件源码
时间: 2023-07-05 20:20:10 浏览: 55
以下是 PHP 中使用 IMAP 模块收取邮件的示例代码:
```php
<?php
/* IMAP服务器信息 */
$imap_server = "{imap.example.com:993/imap/ssl}INBOX";
$username = "your-email@example.com";
$password = "your-password";
/* 连接到 IMAP 服务器 */
$imap = imap_open($imap_server, $username, $password);
/* 检查连接是否成功 */
if (!$imap) {
die("IMAP 连接失败!");
}
/* 搜索最新的 10 封邮件 */
$emails = imap_search($imap, "ALL", SE_UID, "UTF-8", 1, 10);
/* 循环处理每一封邮件 */
foreach ($emails as $email) {
/* 获取邮件标记 */
$flags = imap_getflags($imap, $email);
/* 判断邮件是否已读 */
$is_read = in_array("\\Seen", $flags);
/* 获取邮件头信息 */
$header = imap_headerinfo($imap, $email);
/* 获取发件人信息 */
$from_info = $header->from[0];
$from_name = $from_info->personal;
$from_address = $from_info->mailbox . "@" . $from_info->host;
/* 获取收件人信息 */
$to_info = $header->to[0];
$to_name = $to_info->personal;
$to_address = $to_info->mailbox . "@" . $to_info->host;
/* 获取邮件主题 */
$subject = imap_utf8(imap_utf8($header->subject));
/* 获取邮件日期 */
$date = date("Y-m-d H:i:s", strtotime($header->date));
/* 获取邮件正文 */
$body = imap_fetchbody($imap, $email, "1");
/* 判断邮件是否为 HTML 格式 */
if ($header->type == 1) {
$body = imap_qprint(imap_8bit($body));
} else {
$body = imap_qprint(imap_base64($body));
}
/* 输出邮件信息 */
echo "主题:$subject<br>";
echo "发件人:$from_name ($from_address)<br>";
echo "收件人:$to_name ($to_address)<br>";
echo "日期:$date<br>";
echo "已读:".($is_read ? "是" : "否")."<br>";
echo "正文:<br>$body<br><br>";
}
/* 关闭 IMAP 连接 */
imap_close($imap);
?>
```
以上代码中,首先通过 `imap_open()` 函数连接到 IMAP 服务器,然后使用 `imap_search()` 函数搜索最新的 10 封邮件。接着使用 `imap_headerinfo()` 函数获取邮件头信息,包括发件人、收件人、主题等。最后使用 `imap_fetchbody()` 函数获取邮件正文,并根据邮件类型(纯文本或 HTML)进行解码。