MAPI, HrQueryAllRows: фильтр сообщений по теме

Я довольно плохо знаком с MAPI и не написал много кода на C ++.

По сути, я хочу прочитать все электронные письма в папке «Входящие» и отфильтровать их по тексту. До сих пор я использую исходный код, предоставленный на веб-сайт Microsoft MSDN который в основном читает все электронные письма из входящих сообщений. Теперь я хочу не получать все электронные письма, а фильтровать их по теме, скажем: я хочу, чтобы все электронные письма были в моей папке входящих с заголовком темы «test».

До сих пор я выяснил, что следующая строка кода извлекает все письма:

 hRes = HrQueryAllRows(lpContentsTable, (LPSPropTagArray) &sptCols, &sres, NULL, 0, &pRows);

Параметр &sres от типа SRestriction,

Я пытался реализовать фильтр на «тест» в теме:

sres.rt = RES_CONTENT;
sres.res.resContent.ulFuzzyLevel = FL_FULLSTRING;
sres.res.resContent.ulPropTag = PR_SUBJECT;
sres.res.resContent.lpProp = &SvcProps;

SvcProps.ulPropTag = PR_SUBJECT;
SvcProps.Value.lpszA = "test";

ScvProps от типа SPropValue,

Если я выполню приложение, то получу 0 строк. Если я изменю тест строки на пустую строку, я получу все письма.

Я предполагаю, что я использую опцию «фильтр» неправильно, какие-нибудь идеи?

Редактировать: Когда я изменяю FuzzyLevel на:

sres.res.resContent.ulFuzzyLevel = FL_SUBSTRING;

тогда я могу искать предметы, которые содержат один символ, но как только я добавляю второй символ, я получаю 0 строк в результате. Я почти уверен, что это всего лишь некоторые вещи с ++, которые я не понимаю, которые вызывают все эти проблемы …

0

Решение

Я понял проблему.

Замена

sres.res.resContent.ulFuzzyLevel = FL_FULLSTRING;
sres.res.resContent.ulPropTag = PR_SUBJECT;
SvcProps.ulPropTag = PR_SUBJECT;

с

sres.res.resContent.ulFuzzyLevel = FL_SUBSTRING;
sres.res.resContent.ulPropTag = PR_SUBJECT_A;
SvcProps.ulPropTag = PR_SUBJECT_A;

исправил проблему.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]