2016-08-02 4 views
0

私は、電子メールの添付ファイル(PDF、Doc/Docx)を読み込んで、入力したキーワードを検索するOutlookアドインをC#添付ファイルからの検索バーに表示されます。しかし、問題は私が電子メールの添付ファイルでそれらの電子メールを見つけることができますが、それは私に右のカウントを与えるものではありません。私はこれが起こっている理由は、私が添付ファイルから単語を正しく取り出すことができないことだと思います。どんな助けもありがとう!ここで私のOutlookアドインでは、検索バーに入力したキーワードはカウントされません

は、それが今のところあるものです:

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; 
    } 
を与えます
+0

これはプログラミングの質問ですか?予期しない結果をもたらすコードの関連するスニペットは何ですか? –

+0

はい、コードを追加しました –

答えて

0

まず、 y添付ファイルにUTF-16でエンコードされたデータがありますか?それとも1バイトですか? UnicodeではなくASCIIエンコーディングを使用してください。

第2に、OOMではPropertyAccessor.GetPropertyを使用して大きな(32kB +)バイナリプロパティにアクセスすることはできません。添付ファイルをファイル(Attachment.SaveAsFile)として保存するか、添付ファイルデータを保存せずに取得するその他の手段(拡張MAPIまたは置換)を使用する必要があります。

コードをステップ実行し、変数の値を調べて期待どおりのデータを取得しようとしましたか?

+0

ええ、ありがとうsaveAsFileものは働いた。 –

関連する問題