我需要使用VSTO addin c#
将.msg文件添加到Outlook自定义文件夹中答案 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