首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >c# VSTO如何在ActiveInlineResponse中保存电子邮件

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

Stack Overflow用户
提问于 2020-11-23 19:27:43
回答 1查看 28关注 0票数 0

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

我的VSTO插件使用Outlook创建新电子邮件。但是用户填写的邮件是不发送的,首先修改邮件,然后通过C#发送。

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

Inspector works中保存电子邮件

代码语言:javascript
复制
inspector = Globals.ThisAddIn.Application.ActiveInspector(); 

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

问题出在explorer

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

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

代码语言:javascript
复制
Explorer explorer = Globals.ThisAddIn.Application.ActiveExplorer();
MailItem item = explorer.ActiveInlineResponse;

item.Save();

谢谢你的建议

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-24 01:10:23

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

请注意,您可以更改邮件文件的已发送标志-对于存储中的邮件,该位只能在第一次保存邮件之前翻转(这就是为什么对象模型中的MailItem.Sent属性是只读的)。但这一限制不适用于MSG文件)。如果可以选择使用Redemption,您可以使用类似以下内容来使MSG文件显示为已发送:

代码语言:javascript
复制
Redemption.RDOSession session = new Redemption.RDOSession();
Redemption.RDOMail msg = session.GetMesageFromMsgFile(@"c:\temp\file.msg");
msg.Sent = true;
msg.Save();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64967566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档