2016-08-02 33 views
0

Also habe ich ein Outlook-Add-In in C# erstellt, das die E-Mail-Anhänge (PDF, Doc/Docx) liest und nach Stichwörtern suche in der Suchleiste aus den Anhängen. aber das Problem ist, dass ich diese E-Mails mit den E-Mail-Anhängen finden kann, aber es gibt mir nicht die richtige Zählung. Ich denke, der Grund dafür ist, dass ich die Wörter aus dem Anhang nicht richtig abrufen kann. Jede Hilfe wird geschätzt Vielen Dank!Mein Outlook-Add-In zählt nicht das Schlüsselwort, das ich in die Suchleiste eingebe.

Hier ist, was es so weit ist:

Entering keyword into search bar

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

^Should 1

EDIT Ausgabe: Code hinzugefügt, die ich, dass unerwartete Ergebnisse

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

Ist das eine Programmierfrage? Was ist der relevante Codeausschnitt, der zu unerwarteten Ergebnissen führt? –

+0

Ja, ich habe gerade den Code –

Antwort

0

Erstens, reall y Haben Sie UTF-16-codierte Daten im Anhang? Oder ist es ein einzelnes Byte? Verwenden Sie ASCII-Codierung anstelle von Unicode.

Zweitens, beachten Sie, dass OOM nicht den Zugriff auf große (32kB +) Binäreigenschaften mithilfe von PropertyAccessor.GetProperty ermöglicht. Sie müssen den Anhang als Datei speichern (Attachment.SaveAsFile) oder andere Mittel verwenden, um die Anhangsdaten zu erhalten, ohne sie zu speichern (Extended MAPI oder Redemption).

Haben Sie versucht, Ihren Code durchzugehen und die Werte der Variablen zu überprüfen, um sicherzustellen, dass Sie die Daten erhalten, die Sie erwarten?

+0

hinzugefügt. Ja, danke, dass die saveAsFile-Sache funktioniert hat. –