2013-08-05 2 views
0

Я пишу надстройку для Outlook 2010 с помощью Visual Studio C# 2010. На самом деле я собираюсь внедрить байесовский спам-фильтр, который классифицирует электронные письма на основе их содержимого , моя проблема в том, что общедоступные наборы данных, доступные в Интернете, являются всеми txt-файлами, и мне нужно, чтобы они были преобразованы в Outlook MailItem (элемент Outlook). Я испытываю различные подсказки, чтобы отлитые текстовые файлы в Outlook.MailItem, но ни один из них work.for пример:Преобразование txt-файлов в Outlook MailItem в C# VSTO Надстройка

Outlook.MAPIFolder inBox = (Outlook.MAPIFolder)this.Application.ActiveExplorer().Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox); 
      Outlook.MAPIFolder sourceFolder = inBox.Folders["non_spam"]; 
      Outlook.MAPIFolder destFolderInbox = inBox.Folders["testingNonSpma_inbox"]; 
      Outlook.MAPIFolder destFolderJunk = inBox.Folders["testingNonSpam_junk"]; 
      Outlook.Items items = (Outlook.Items)sourceFolder.Items; 
      Outlook.MailItem mailItem = null; 
      try 
      { 
       foreach (object eMial in items) 
       { 
        ***mailItem = eMial as Outlook.MailItem; 
        // OR this way mailItem = (Outlook.MailItem) eMail;*** 
        //Tokenize mail item 
        string tokenString = Tokenize(mailItem); 

        //Analyze and deliver to inbox\testingSpam_inbox or inbox\testingSpam_junk 
        bool isSpam = Analyze(tokenString); 
        if (isSpam) 
        { 
         mailItem.Move(destFolderJunk); 
        } 
        else 
        { 
         mailItem.Move(destFolderInbox); 
        } 
       } 
      } 
      catch(Exception ex) 
      { 
       MessageBox.Show("Error in class ThisAddin, Method buttonClassifyNon_Spam\n Subject:" + mailItem.Subject + ex.Message); 
      } 

всегда разные ошибки случаются, как: не может преобразовать System .__ COM объект к интерфейсу Outlook.MailItem и т.д. , (я проверил различные методы, упомянутые на этом сайте, и другие, но не удалось) из-за большого количества файлов txt в наборах данных, я не могу вручную открыть их и скопировать содержимое в Outlook New Mail. Я ищу любое решение, которое конвертирует все эти txt-файлы в Outlook.MailItem. Я ценю любую помощь. спасибо

ответ

1

Что это за файлы? Сообщения MIME? В этом случае вы можете явно разобрать их и создать новые сообщения Outlook, или вы можете использовать Redemption для их импорта в Outlook.

В VB:

set Session = CreateObject("Redemption.RDOSession") 
    Session.MAPIOBJECT = Application.Session.MAPIOBJECT 
    set Inbox = Session.GetDefaultFolder(olFolderInbox) 
    set Msg = Inbox.Items.Add("IPM.Note") 
    Mg.Sent = true 
    Msg.Import "C:\Temp\test", 1024 'olRfc822 
    Msg.Save 
+0

привет дорогой Димитрий Streblechenko, они представляют собой текстовые файлы. Я пришлю вам их число, чтобы взглянуть на них. кстати, спасибо за ваше время и ваш ответ. – 2229202

+0

образцы моих txt-файлов выглядят следующим образом: – 2229202

+0

привет, могу я попросить вас прислать мне эти коды на C#? Я загрузил Redemption и добавил как ProfManLoader.cs, так и RedemptionLoader.cs в мое решение и добавил библиотеку Redemption COM в ссылки моего решения. но я не знаю, как его использовать и реализовать, чтобы решить мои проблемы. Я ценю вашу помощь и руководство. С наилучшими пожеланиями. – 2229202