使用c#将.msg文件导入到Outlook自定义文件夹

时间:2016-11-09 06:29:53

标签: outlook vsto outlook-addin

我需要使用VSTO addin c#

将.msg文件添加到Outlook自定义文件夹中

3 个答案:

答案 0 :(得分:1)

Outlook.Application objOutlook = new Outlook.Application();                 Outlook.MailItem email =(Outlook.MailItem)objOutlook.Session.OpenSharedItem(strFilePath);                 Outlook.MailItem movedItem = email.Move(ParentFolder);

答案 1 :(得分:0)

您可以使用Application类的CreateItemFromTemplate方法从磁盘打开现有的Outlook消息。该方法从Outlook模板(.oft)创建一个新的Microsoft Outlook项目并返回新项目。但您也可以传递Outlook .msg文件。 How To: Create a new Outlook message based on a template文章详细介绍了所有步骤。

另一种方法是以编程方式运行.msg文件。可以使用Process.Start方法,只需指定文件路径即可。由于Outlook是单例,因此将在正在运行的Outlook实例中打开该消息。因此,您可以处理NewInspector事件并获取刚刚打开的消息的句柄。

答案 2 :(得分:0)

CreateItemFromTemplate在未发送状态下创建新项目。

如果您希望邮件处于已发送状态,您可以使用扩展MAPI(C ++或Delphi)打开MSG文件(OpenIMsgOnIStg等)并将属性复制到文件夹中创建的邮件中(保留请记住,IMessage::CopyTo无法正常工作,因为MSG文件没有正确重新映射命名属性,这可能会导致邮件损坏。)

如果使用Redemption(任何语言)是一个选项,它RDOMail对象允许在第一次保存邮件之前设置Sent属性(MAPI限制)并导入MSG文件使用Import方法(MSG是受支持的格式之一):

  set Session = CreateObject("Redemption.RDOSession")
  Session.MAPIOBJECT = Application.Session.MAPIOBJECT
  set Folder = Session.GetFolderFromID(YourOutlookFolder.EntryID)
  set Item = Folder.Items.Add("IPM.Note")
  Item.Sent = true
  Item.Import "c:\temp\test.msg", olMsg
  Item.Save