Можно ли изменить электронную почту с помощью функций PHP IMAP?

1

У меня нет проблем с работой с электронными письмами с использованием функций PHP IMAP, но я бы хотел, чтобы я мог физически изменять сообщения, и я просто не уверен, что это возможно. Кто-нибудь имел успех в этом?

т.е. я хотел бы иметь возможность изменить тему темы, или я хотел бы навсегда удалить подписи или объявления из тела и т.д.

До сих пор единственный способ, который я вижу, это:

  1. загрузить сообщение
  2. собрать все его заголовки и т.д.
  3. воссоздайте электронное письмо с помощью какого-либо объекта электронной почты и заполните его старыми данными
  4. Измените части, которые я хочу изменить
  5. Удалить исходное сообщение
  6. Сохранить новое сообщение **

** Это единственное неизвестное здесь... знаете ли вы, можно ли просто сохранить новое сообщение в папке или нужно его получить через SMTP?

Если я могу просто сохранить, мне нужно беспокоиться о номере заказа сообщения (уникальный идентификатор в контексте папки, простое целое число), или будет ли папка просто пересортироваться на основе указанных сообщений даты отправки?

Любые идеи были бы очень признательны!

  • 1
    Команда, которую вы ищете - APPEND.
  • 0
    @ Макс, если вы хотите добавить ответ с любыми другими деталями в интересах тех, кто ищет подобное, я был бы рад принять его! Ура!
Показать ещё 2 комментария
Теги:
email
imap
smtp

2 ответа

1
Лучший ответ

Как отметил @Max в комментариях к OP, функция IMAP, которую я искал, была "APPEND", а соответствующий PHP-метод - http://php.net/manual/en/function.imap-append.php

Синтаксис: bool imap_append ( resource $imap_stream, string $mailbox, string $message [, string $options = NULL [, string $internal_date = NULL ]] )

Есть примеры того, как добавить сообщение в папку IMAP в комментариях на странице ссылки, но основной пример следующий: для добавления сообщения в папку "INBOX.drafts"...

imap_append($stream, "{imap.example.org}INBOX.Drafts"
                   , "From: [email protected]\r\n"
                   . "To: [email protected]\r\n"
                   . "Subject: test\r\n"
                   . "\r\n"
                   . "this is a test message, please ignore\r\n"
                   );

... с $stream являющимся дескриптором соединения. В моем случае я также хочу включить mime-контейнеры, которые будут включены в конкатенированное $message, и будут соответствующим образом закодированы на основе типов контента.

Надеюсь, это поможет!

  • 0
    Спасибо за информативный ответ.
0

Команда STORE не поддерживается (IIRC) на стандартном расширении IMAP, но доступна в наемном IMAP-клиенте. Но я изо всех сил пытаюсь представить, почему вы хотели бы сделать это с IMAP в первую очередь - для большинства сценариев, о которых я могу думать, было бы разумнее изменить сообщение на отправляющем MUA/MTA/MDA

  • 0
    Я изучаю использование электронных писем и контейнеров MIME в качестве хранилища данных, и я хотел бы иметь возможности как для чтения, так и для записи, но чтение будет делать, тем не менее. И прежде чем ты это скажешь, я знаю;)
  • 0
    Ой, только что заметил, что мой дурацкий планшет заменил «орду» на «нанятый», что может немного сбить с толку.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню