Я пытаюсь получить дату отправки файла сообщения электронной почты .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, но, похоже, это связано с некоторыми проблемами безопасности и совместимости, поэтому это не сработает.)