簡體   English   中英

在php網站上集成IMAP

[英]Integrating IMAP on php website

我想借助php在我的網站上創建一個IMAP服務。 它基本上只有很少的步驟。

我想要的主要部分是我得到一個gmail帳戶文件夾列表,點擊一個特定文件夾,該文件夾中的郵件列表應該打開,點擊任何特定郵件,其詳細信息應該打開。

我有文件夾列表,我有一個郵件列表,我有郵件的詳細信息,但它們是單獨的部分,但我希望結合並創建一個如上所述的過程。

下面給出3個步驟的代碼

步驟1列出文件夾:它將列出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>";

o / p第1步

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";
    }

任何人都可以請電話我如何達到上述要求

有幾種方法可以做到這一點。

一種方法是:

您可以考慮使用為文件夾結構創建超鏈接和消息列表中的項目,然后將javascript函數與這些超鏈接相關聯

更改echo '<li>' . $folder . '</li>'; echo '<li>' . $folder . '</li>';
echo '<li><a name="' . $folder . '" onClick="listFolder(this.name)" href="#">'. $folder . '</a></li>'; echo '<li><a name="' . $folder . '" onClick="listFolder(this.name)" href="#">'. $folder . '</a></li>'; 這將創建每個文件夾名稱作為超鏈接,可以單擊該超鏈接以觸發javascript函數。

你必須編寫javascript函數,例如。 listFolder()列出文件夾的內容。

如果您想在每次選擇后沒有重新加載頁面的情況下執行此操作,則必須使用AJAX請求。 你會需要:

1)一個普通頁面,列出下拉列表中的可用文件夾。 在下拉列表中選擇文件夾將需要觸發執行AJAX請求的Javascript函數。

2)然后,您需要處理來自步驟1)的AJAX請求,並返回包含所有可用消息的數據結構。 再次使用JS在步驟1中填充表或列表或同一頁面上的任何內容。

3)最后,您需要將另一個Javascript方法附加到步驟2)中定義的消息,以向服務器發出另一個AJAX請求以返回單個消息內容,然后使用JS將此插入到頁面的消息窗格中1)。

如果你想輕松生成AJAX請求,我當然可以推薦JQuery - https://api.jquery.com/jquery.ajax/

其次,為了幫助PHP代碼與IMAP服務器交互,我還強烈推薦Fetch庫,它將幫助您避免代碼中的許多陷阱和抽象復雜性。 https://github.com/tedious/Fetch

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM