2016-08-02 2 views
0

Итак, я создавал надстройку надстройки в C#, которая читает вложения электронной почты (PDF, Doc/Docx) и выполняет поиск ключевых слов, которые я вводил в строке поиска из вложений. но проблема в том, что я могу найти эти письма с вложениями электронной почты, но это не дает мне правильное значение. Я думаю, причина в том, что я не могу правильно извлечь слова из приложения. Любая помощь будет оценена Спасибо!Моя надстройка надстройки не учитывает ключевое слово, которое я вводил в строке поиска

Вот что это до сих пор:

Entering keyword into search bar

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

^должен вывести 1

EDIT: Добавлен код, который я использую, что дает неожиданные результаты

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; 
    } 
+0

Это вопрос программирования? Каков соответствующий фрагмент кода, который дает неожиданные результаты? –

+0

Да, только что добавил код –

ответ

0

Во-первых, вы повторно y имеют в кодировке UTF-16 данные? Или это один байт? Используйте кодировку ASCII вместо Unicode.

Во-вторых, имейте в виду, что OOM не позволит вам получить доступ к большим (32kB +) бинарным свойствам с помощью PropertyAccessor.GetProperty. Вам необходимо сохранить вложение в виде файла (Attachment.SaveAsFile) или использовать другие способы получения данных вложения без сохранения его (Extended MAPI или Redemption).

Вы пытались пройти свой код и проверить значения переменных, чтобы убедиться, что вы получаете данные, которые ожидаете?

+0

Да, спасибо, что saveAFile работает. –

Смежные вопросы