c# VSTO 如何在 ActiveInlineResponse 中保存电子邮件

c# VSTO How to save email in ActiveInlineResponse

我有一个简单的问题,但不知道如何解决。

我的 VSTO 插件使用 Outlook 创建新电子邮件。但是用户填写的application outlook的邮件发不出去,先用C#修改发邮件。[​​=17=]

我的问题是如何保存这封不是通过用户发送,而是通过 c# 发送的电子邮件。

保存电子邮件 Inspector 有效

inspector = Globals.ThisAddIn.Application.ActiveInspector(); 

Outlook.MailItem mi = inspector.CurrentItem as Outlook.MailItem;
mi.Save();

问题是 explorer

用户打开电子邮件只需单击一下,弹出窗口 windows 立即打开,用户留在资源管理器中。当他点击回复时,Outlook 中的电子邮件被标记为 Draft.

如何保存此类电子邮件(只需在触发按钮 Send 后将状态 Draft 更改为正常。)

Explorer explorer = Globals.ThisAddIn.Application.ActiveExplorer();
MailItem item = explorer.ActiveInlineResponse;

item.Save();

感谢提示

您最早可以访问处于已发送状态的消息是在 Items.ItemAdd 事件在“已发送邮件”文件夹上触发时。届时所有与发件人相关的属性也将被填充。

请注意,您可以更改 MSG 文件的已发送标志 - 对于商店中的消息,该位只能在消息第一次保存之前翻转(这就是为什么 MailItem.Sent 属性 在 OOM 中是只读的)。但该限制不适用于 MSG 文件)。如果使用 Redemption(我是它的作者)是一个选项,您可以使用类似下面的内容来使 MSG 文件显示为已发送:

Redemption.RDOSession session = new Redemption.RDOSession();
Redemption.RDOMail msg = session.GetMesageFromMsgFile(@"c:\temp\file.msg");
msg.Sent = true;
msg.Save();