TCL & IMAP - Получить сырой файл .eml - PullRequest
1 голос
/ 14 ноября 2011

Я изучаю TCL и пытаюсь создать проект TCL, который использует IMAP для получения неархивированных сообщений, а затем добавляет их в мою базу данных. У меня есть основы для подключения, входа в систему, выборки и чтения данных, но теперь я запутался, как получить файл и сохранить его.

Можно ли сохранить файл напрямую или мне нужно каким-то образом создать файл самостоятельно после индивидуальной загрузки заголовка, основного текста, вложений и т. Д.?

приписка

Все, что я нашел по этому вопросу, написано на PHP / C # или на любом другом языке, кроме TCL! и все они имеют встроенные функции для извлечения данных и их сохранения. Я нашел библиотеку TCL imap4, но, похоже, она не обладает теми же возможностями, что и PHP.

Ответы [ 2 ]

4 голосов
/ 05 апреля 2012

Использование:

FETCH <message ID> BODY.PEEK[]

чтобы получить полное сообщение (тело + заголовки).

2 голосов
/ 14 ноября 2011

Из того, что я вижу в интернете, ".eml" - это то, что более старая софтвейт называет "форматом mbox", то есть это просто обычный текстовый файл, который содержит сообщение электронной почты, передаваемое по сети с помощью SMTP..

И из того, что я вижу в разделе о команде "FETCH" в IMAP RFC , команда FETCH FULL - это то, что якобы извлекает все содержимое данного сообщения.

Поскольку запись чего-либо в файл в Tcl не представляет никакой сложности, я просто попробую этот маршрут:

  1. Используйте FETCH FULL, чтобы получить полное сообщение;
  2. Откройте файл с именем, оканчивающимся на «.eml» в режиме записи / добавления, настройте результирующий канал на «двоичную» семантику (вызывая chan config $fd -translation binary);
  3. Запишите туда извлеченное содержимое,закройте файл.

Затем проверьте, как это работает, попытавшись импортировать полученный файл в Outlook, Thunderbird и т. д.

...