gpt4 book ai didi

php - 在 php 网站上集成 IMAP

转载 作者:可可西里 更新时间:2023-10-31 22:16:57 26 4
gpt4 key购买 nike

我正在尝试借助 php 在我的网站上创建 IMAP 服务。它基本上只有几个步骤。

我想要的主要部分是我得到一个 gmail 帐户的文件夹列表,点击一个特定的文件夹,该文件夹中的邮件列表应该打开,点击任何特定的邮件,它的详细信息应该打开。

我有文件夹列表,我有邮件列表,我有邮件的详细信息,但它们是独立的部分,但我希望如上所述组合并创建一个进程。

下面给出了3个步骤的代码

第一步列出文件夹:它将列出gmail 的所有文件夹。我的代码是

$folders = imap_list($imap, "{imap.gmail.com:993/imap/ssl}", "*");
echo "<ul>";
foreach ($folders as $folder) {
$folder = str_replace("{imap.gmail.com:993/imap/ssl}", "", $folder);
$folder = str_replace("[Gmail]/", "", $folder);
echo '<li>' . $folder . '</li>';
}
echo "</ul>";

步骤 1 的 o/p

INBOX
DRAFT
SENT
TRASH

第 2 步列出电子邮件(单击文件夹邮件列表应该会打开)

$numMessages = imap_num_msg($imap);

for ($i = $numMessages; $i > ($numMessages - 20); $i--)
{
$header = imap_header($imap, $i);
$fromInfo = $header->from[0];
$replyInfo = $header->reply_to[0];

$details = array(
"fromAddr" => (isset($fromInfo->mailbox) && isset($fromInfo->host))
? $fromInfo->mailbox . "@" . $fromInfo->host : "",
"fromName" => (isset($fromInfo->personal))
? $fromInfo->personal : "",
"replyAddr" => (isset($replyInfo->mailbox) && isset($replyInfo->host))
? $replyInfo->mailbox . "@" . $replyInfo->host : "",
"replyName" => (isset($replyTo->personal))
? $replyto->personal : "",
"subject" => (isset($header->subject))
? $header->subject : "",
"udate" => (isset($header->udate))
? $header->udate : ""
);

$uid = imap_uid($imap, $i);

$datee= gmdate("F j, Y, g:i a", $details["udate"] );

echo "<ul>";
echo "<li><strong>From:</strong>" . $details["fromName"];
echo " " . $details["fromAddr"] . "</li>";
echo "<li><strong>Subject:</strong> " . $details["subject"] . "</li>";
echo "<li><strong>DATE:</strong> " . $datee . "</li>";

}

步骤 2 的 o/p(点击该邮件的特定邮件内容应该会打开)

From:ABC
Subject: TOPIC
DATE: September 2, 2015, 9:00 am

第 3 步查看消息

$message_count = imap_num_msg($imap);

for ($i = 1; $i <= $message_count; ++$i) {
$header = imap_header($imap, $i);
$body = trim(substr(imap_body($imap, $i), 0, 100));
$prettydate = date("jS F Y", $header->udate);

if (isset($header->from[0]->personal)) {
$personal = $header->from[0]->personal;
} else {
$personal = $header->from[0]->mailbox;
}

$email = "$personal <{$header->from[0]->mailbox}@{$header->from[0]->host}>";
echo "On $prettydate, $email said \"$body\".\n";
}

谁能告诉我如何才能达到上述要求

最佳答案

如果您想在每次选择后不重新加载页面的情况下执行此操作,则必须使用 AJAX 请求。您将需要:

1) 一个普通页面,在下拉列表中列出了可用的文件夹。在下拉列表中选择文件夹将需要触发执行 AJAX 请求的 Javascript 函数。

2) 然后您需要处理来自步骤 1) 的 AJAX 请求并返回包含所有可用消息的数据结构。再次使用 JS 在第 1 步的同一页面上填充表格或列表或其他任何内容)。

3) 最后,您需要将另一个 Javascript 方法附​​加到步骤 2) 中定义的消息,以向服务器发出另一个 AJAX 请求以返回单个消息内容,然后使用 JS 将其插入到消息 Pane 中来自步骤 1 的页面)。

如果您想轻松生成 AJAX 请求,我当然可以推荐 JQuery - https://api.jquery.com/jquery.ajax/

其次,为了帮助 PHP 代码与 IMAP 服务器交互,我还强烈推荐 Fetch 库,它将帮助您避免代码中的许多陷阱和抽象复杂性。 https://github.com/tedious/Fetch

关于php - 在 php 网站上集成 IMAP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32344807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com