электронная почта — интеграция IMAP на сайте php

Я пытаюсь создать службу IMAP на моем сайте с помощью php. Это в основном имеет несколько шагов.

Основная часть, которую я хочу, это то, что я получаю список папок учетной записи 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>";

о / п шага 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>";

}

o / p шага 2 (щелчок по определенному почтовому содержимому этой почты должен быть открыт)

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

Может кто-нибудь, пожалуйста, тел, как я могу достичь вышеуказанного требования

11

Решение

Есть несколько способов сделать это.

Одним из способов будет:

Вы можете изучить использование создания гиперссылок для структуры папок и элементов в списке сообщений, а затем связать функции javascript с этими гиперссылками.

+ Изменить
echo '<li>' . $folder . '</li>';
в
echo '<li><a name="' . $folder . '" onClick="listFolder(this.name)" href="#">'. $folder . '</a></li>'; который создаст каждое имя папки в виде гиперссылки, по которой можно щелкнуть, чтобы активировать функцию JavaScript.

Вы должны были бы написать функции JavaScript, например. listFolder() перечислить содержимое папки.

0

Другие решения

Если вы хотите сделать это без перезагрузки страницы после каждого выбора, вам придется использовать запросы AJAX. Тебе понадобится:

1) Одна обычная страница со списком доступных папок в раскрывающемся списке. Выбор папки в раскрывающемся списке должен вызвать функцию Javascript, которая выполняет запрос AJAX.

2) Затем вам нужно будет обработать запрос AJAX из шага 1) и вернуть структуру данных, содержащую все доступные сообщения. Снова с помощью JS заполните таблицу или список или что-то еще на той же странице в шаге 1).

3) Наконец, вам нужно будет прикрепить другой метод Javascript к сообщениям, определенным на шаге 2), чтобы сделать еще один AJAX-запрос к серверу на возврат содержимого отдельного сообщения, а затем с помощью JS вставить его в область сообщений на странице из шага 1).

Если вы хотите упростить генерацию AJAX-запросов, я, конечно, могу порекомендовать JQuery — https://api.jquery.com/jquery.ajax/

Во-вторых, чтобы помочь PHP-коду взаимодействовать с сервером IMAP, я также настоятельно рекомендую библиотеку Fetch, которая поможет вам избежать многих подводных камней и абстрактных сложностей в вашем коде. https://github.com/tedious/Fetch

0

По вопросам рекламы [email protected]