Собственно говоря такой вот вопрос, может кто знает. Как генерируется в аутлуке MessageId. В частности интересуют новые версии его. То, что описывал Z0mbie уже безбожно устарело, и даже 6.0 версия аутлука уже как-то по другому генерирует его
Да я это уже и сделал, там всё на С++ сделано было, по этому с этими классами там позапутано сильно. Судя по виду там вообще псевдослучайно всё (на основ GUID ) Всё разобрался, дошло до меня как и что делает. Псевдокод выходит типа: Code: GUID pguid = {0}; char* Domain = PszGetDomainName(); CoCreateGuid(&pguid); result = StringCchPrintfA( DestBuf, 255, "%s%08lX%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X@%s%s", "<", pguid.Data1, pguid.Data2, pguid.Data3, pguid.Data4[0], pguid.Data4[1], pguid.Data4[2], pguid.Data4[3], pguid.Data4[4], pguid.Data4[5], pguid.Data4[6], pguid.Data4[7], v5, ">");
Ага, там всё на основе него. Благо отладочные символы виндовые помогают ) Там всё работает так: 1) CMessageTree::_HrSetMessageId ведет в MimeOleGenerateMID 2) MimeOleGenerateMID ведет в PrintfAGuidToString 3) PrintfAGuidToString уже генерит GUID и добавляет имя домена
После долгих копаний выяснилось, что не так всё и просто там. если первая часть MessageID - это банальный GUID, то вторая часть это строка получаемая как: 1) получается имя хоста текущего 2) для имени хоста получается доменное имя 3) из получившегося доменного имени выризаются все буквы кроме англ и цифр и точки 4) далее чтото странное - удаляются DBCS символы (чесно ховоря хз зачем если и так отфильтровали всё лишнее) 5) обрезается всё, что до первой точки (включая эту точку)