首页 文章

在C#VSTO加载项中将txt文件转换为Outlook MailItem

提问于
浏览
0

我正在使用Visual Studio C#2010为Outlook 2010编写一个外接程序解决方案 . 实际上我将实现一个贝叶斯垃圾邮件过滤器,它根据内容对电子邮件进行分类 . 我的问题是互联网上可用的公共数据集都是txt文件,我需要它们在Outlook MailItem(Outlook项目)中转换 . 我测试了将txt文件转换为Outlook.MailItem的不同提示,但它们都没有工作 . 例如:

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新邮件中的内容 . 我正在寻找将所有这些txt文件转换为Outlook.MailItem的任何解决方案 . 我非常感谢任何帮助 . 谢谢

1 回答

  • 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
    

相关问题