MAPI,HrQueryAllRows:过滤主题上的消息

时间:2013-12-05 06:52:49

标签: c++ email mapi

我是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 ++东西......

1 个答案:

答案 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;

修复了问题。