我的Outlook加载项不会计算我在搜索栏中输入的关键字

时间:2016-08-02 15:09:52

标签: c# outlook outlook-addin

所以,我一直在c#中创建一个outlook加载项,用于读取电子邮件附件(PDF,Doc / Docx)并搜索我在附件中在搜索栏中输入的关键字。但问题是我可以通过电子邮件附件找到那些电子邮件,但它并没有给我正确的计数。我认为发生这种情况的原因是我无法正确检索附件中的单词。任何帮助将不胜感激谢谢!

到目前为止:

Entering keyword into search bar

Searched for keyword, but does not show proper count (should be 1)

^应输出1

编辑:添加了我正在使用的代码,提供了意想不到的结果

private int countKeywords(Outlook.Attachment attachment, string keyword)
    {
        const string PR_ATTACH_DATA_BIN = "http://schemas.microsoft.com/mapi/proptag/0x37010102";

        var attachmentData = attachment.PropertyAccessor.GetProperty(PR_ATTACH_DATA_BIN);
        //MessageBox.Show(TextFromWord(attachment));
        string data = System.Text.Encoding.Unicode.GetString(attachmentData);

        int i = 0;
        int startIndex = 0;
        int count = 0;
        if (data.Contains(" "))
        {

            while (i < data.Length)
            {
                if (data[i] == ' ' && data.Substring(startIndex, i - startIndex).Equals(keyword))
                {
                    startIndex = i + 1;
                    count++;
                }
                i++;
            }

        }
        else
        {
            if (data.Equals(keyword))
                count++;
        }

        //  MessageBox.Show(Encoding.GetString(attachmentData));
        return count;
    }

1 个答案:

答案 0 :(得分:0)

首先,你真的在​​附件中有UTF-16编码数据吗?或者是单字节?使用ASCII编码而不是Unicode。

其次,请记住,OOM不允许您使用PropertyAccessor.GetProperty访问大型(32kB +)二进制属性。您需要将附件保存为文件(Attachment.SaveAsFile)或使用其他方法获取附件数据而不保存它(扩展MAPI或赎回)。

您是否尝试单步执行代码并检查变量值以确保获得所需的数据?