Получение заголовков частей тела с помощью IMAP C-Client - PullRequest
1 голос
/ 22 января 2011

Я использую UW IMAP c-client v. 2007e, и я не смог найти следующую функцию: мне нужно получить заголовок определенной части тела.То есть почтовое сообщение содержит несколько частей тела, и одна из них - это вложение, похожее на это:

  --_004_57D6D2035A40B8ECEBA59CB9C13F52A1334093MBXC18_
  Content-Type: text/plain; name="func.txt"
  Content-Description: func.txt
  Content-Disposition: attachment; filename="func.txt"; size=604;
    creation-date="Thu, 12 Aug 2010 18:41:40 GMT";
    modification-date="Thu, 12 Aug 2010 18:41:40 GMT"
  Content-Transfer-Encoding: base64

  ...blah-blah-blah in base64...

Теперь я могу получить часть бла-бла с помощью imap_fetchbody(), но не вижуфункция, которая может дать мне только часть заголовков (или заголовки + тело, это было бы тоже хорошо).Я могу получить весь текст сообщения, но тогда мне придется самому разбирать его на части, чего я не хочу делать.Есть ли способ, которым я мог бы заставить c-client получить этот заголовок для определенной части?

1 Ответ

1 голос
/ 22 января 2011

Вы хотите раздел MIME детали. Из IMAP RFC :

Спецификатор части MIME ссылается на заголовок [MIME-IMB] для этой части.

C-клиентфункция для выполнения FETCH:

long imap_msgdata (MAILSTREAM *stream,unsigned long msgno,char *section,
                   unsigned long first,unsigned long last,STRINGLIST *lines,
                   long flags)

Так что, если вы хотите, чтобы заголовки из части 2.3 сообщения № 8 (например), вы назвали бы это:

imap_msgdata(stream, 8, "2.3.MIME", 0, 0, null, FT_PEEK);

(FT_PEEK предотвращает пометку сообщения как \Seen. Если вы хотите пометить сообщение как прочитанное, передайте 0 в качестве последнего аргумента.)

...