Простой способ пересылки писем с помощью PHP IMAP - PullRequest
0 голосов
/ 05 ноября 2019

Я пишу скрипт, который будет получать все новые электронные письма в разных учетных записях на одном сервере, проверять ключевые слова и затем перемещать каждое электронное письмо в разные учетные записи и папки в этой учетной записи в зависимости от найденных ключевых слов. Я искал простой способ переместить электронные письма из одной учетной записи в другую и в папку в этой учетной записи. Кажется, не существует простой функции imap_forward (). imap_mail_move () работает только в пределах одной учетной записи. Я искал в Интернете несколько часов, пытаясь найти способ сделать это без необходимости перебирать вложения и извлекать каждую часть письма, прежде чем отправлять его по адресу назначения, как если бы я получал новое письмо. Мне нужно убедиться, что информация не будет потеряна во время этого процесса, и электронная почта прибывает в пункт назначения точно так же, как она была первоначально получена. Это может выглядеть как перенаправленное сообщение, это нормально, если вложения от адреса и тела не повреждены.

1 Ответ

0 голосов
/ 05 ноября 2019

Если у вас также есть доступ IMAP к почтовому ящику назначения, вы можете одновременно открыть два подключения IMAP. Используйте одно соединение для чтения сообщения из исходной учетной записи, а другое - для imap_append() его для целевой учетной записи.

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

$newMessage = imap_headers($sourceStream) . "\r\n" . imap_body($sourceStream)
imap_append($destinationStream, $destinationMailbox, $newMessage);
...