2013-11-13 13 views
0

Я пытаюсь создать функцию, которая извлекает тело письма с заданным критерием поиска. Когда я извлекаю элементы из почтового ящика и пытаюсь получить тело, он записывает только часть тела. Вместо этого я хочу получить текст из тела. Как я могу это сделать? Это то, что я до сих пор:Извлечение почты электронной почты Outlook

 Outlook.Application myApp = new Outlook.Application(); 
     const string PR_HAS_ATTACH = "http://schemas.microsoft.com/mapi/proptag/0x0E1B000B"; 

     // Obtain Inbox 
     Outlook.Folder folder = myApp.Session.GetDefaultFolder(OlDefaultFolders.olFolderInbox) as Microsoft.Office.Interop.Outlook.Folder; 


     Outlook.Table table = folder.GetTable(Microsoft.Office.Interop.Outlook.OlTableContents.olUserItems); 

     // Remove default columns 
     table.Columns.RemoveAll(); 

     // Add using built-in name 
     table.Columns.Add("Subject"); 
     table.Columns.Add("ReceivedTime"); 
     table.Sort("ReceivedTime", Microsoft.Office.Interop.Outlook.OlSortOrder.olDescending); 

     // Add using namespace 
     // Date received 
     table.Columns.Add("urn:schemas:httpmail:textdescription"); 

     while (!table.EndOfTable) 
     { 
      Outlook.Row row = table.GetNextRow(); 
      if (row["Subject"].ToString().ToLower().Contains(subject.Text.ToLower()) && row["ReceivedTime"].ToString().Contains(cellCreationDate)) 
      {      
       body.Text = row["urn:schemas:httpmail:textdescription"].ToString(); 
      } 
     } 

ответ

0

Вы не можете использовать Outlook.Table, а затем урна: shcemas: httpmail.textdescription, чтобы получить все тело. textdescription возвращает только первые 255 символов тела, как указано здесь http://msdn.microsoft.com/en-us/library/office/ff861580.aspx.

вот альтернатива.

// change this in your code 
body.Text = row["urn:schemas:httpmail:textdescription"].ToString(); 

// To this 
Microsoft.Office.Interop.Outlook.MailItem mailItem = 
          myApp.Session.GetItemFromID(row["EntryID"]); 
body.Text = mailItem.Body; 
+0

В этой статье говорится, что вы все равно можете отфильтровать таблицу, а затем использовать «EntryID» с GetItemFromID, чтобы получить все тело. – goroth

+0

Спасибо, миллион! Мне просто не нужно было добавлять столбец в таблицу для EntryID: table.Columns.Add («EntryID»); – user2216791

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