我是MAPI的新手,并没有写太多的C ++代码。
基本上我想阅读收件箱中的所有电子邮件,并根据其主题文本对其进行过滤。到目前为止,我正在使用microsoft msdn website提供的源代码,它基本上可以读取收件箱中的所有电子邮件。我现在想要的是不要收到所有的电子邮件,而是根据主题过滤它们,让我们说:我希望收件箱中的所有电子邮件都标题为“test”。
到目前为止,我发现以下代码行检索所有邮件:
hRes = HrQueryAllRows(lpContentsTable, (LPSPropTagArray) &sptCols, &sres, NULL, 0, &pRows);
参数&sres
来自SRestriction
类型。
我尝试在主题中对'test'实施过滤器:
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行。如果我将String测试更改为空字符串,那么我会收到所有电子邮件。
我假设我使用“过滤器”选项错误,任何想法?
编辑:当我将FuzzyLevel更改为:
时sres.res.resContent.ulFuzzyLevel = FL_SUBSTRING;
然后我可以查找包含单个字符的主题但是一旦我添加第二个字符,我得到0行作为结果。我很确定这只是一些我不明白导致所有这些问题的c ++东西......
答案 0 :(得分:1)
我想出了问题。
更换
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;
修复了问题。