Разбор даты из потока заголовков MSG-файла - PullRequest
1 голос
/ 22 сентября 2019

Я пытаюсь получить дату отправки файла сообщения электронной почты .msg.После бесконечного поиска я пришел к выводу, что дата отправки не хранится в отдельном потоке в файле (но, пожалуйста, исправьте меня, если я ошибаюсь).Вместо этого кажется, что дата должна быть получена из потока, содержащего стандартные заголовки электронной почты (поток с именем __substg1.0_007D001F).

Так что мне удалось получить поток заголовка электронной почты и сохранить его в буфере,На данный момент мне нужно найти и разобрать поле Date из заголовков.Я нахожу это трудным, потому что я не верю, что могу использовать стандартную библиотеку C ++ для разбора электронной почты.В конце концов, у меня есть только заголовочный поток, а не целый стандартный почтовый файл.

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

std::wregex regexDate(L"^Date:(.*)\r\n");
std::wsmatch match;

if (std::regex_search(strHeader, match, regexDate)) {

   //...

}

Но я 'Я неохотно использую регулярное выражение (я обеспокоен тем, что оно будет подвержено ошибкам), и мне интересно, есть ли более надежный, приемлемый подход к разбору заголовков.Возможно, разбить строку заголовка на новые строки и найти ту, которая начинается с Date:?Любое руководство будет с благодарностью.

Еще одно соображение: я не уверен, что можно читать в потоке заголовка построчно, потому что IStream не имеет метода get line.

(Примечание: я также пытался получить данные сообщений с помощью автоматизации C ++ Outlook, но, похоже, это связано с некоторыми проблемами безопасности и совместимости, поэтому это не сработает.)

...