Outlook 使用Redemption.ISafeMailItem对象获取邮件收件人
我正在用C#编写一个简单的Outlook程序,用于记录邮件的收件人。若要构建,我将挂接到Outlook邮件项目Outlook 使用Redemption.ISafeMailItem对象获取邮件收件人,outlook,c#-2.0,outlook-addin,outlook-redemption,Outlook,C# 2.0,Outlook Addin,Outlook Redemption,我正在用C#编写一个简单的Outlook程序,用于记录邮件的收件人。若要构建,我将挂接到Outlook邮件项目Send事件以获取Recipient集合。另外,为了避免Outlook安全提示,我正在使用RedemptionSafeMailItem 对于阅读收件人收藏,我将邮件项目分配给安全邮件项目并阅读收件人。但是,如果MailItem有未保存的更改,则Recipient集合将不相同。要复制收件人收藏,邮件项目需要保存,然后通过赎回安全邮件项目进行访问 下面是一个例子。 //事件处理程序 void
Send
事件以获取Recipient
集合。另外,为了避免Outlook安全提示,我正在使用RedemptionSafeMailItem
对于阅读收件人
收藏,我将邮件项目
分配给安全邮件项目
并阅读收件人
。但是,如果MailItem
有未保存的更改,则Recipient
集合将不相同。要复制收件人
收藏,邮件项目
需要保存,然后通过赎回安全邮件项目
进行访问
下面是一个例子。
//事件处理程序
void\u MailItemSend(参考bool取消)
{
SafeMailItem SafeMailItem=(SafeMailItem)Activator.CreateInstance(Type.GetTypeFromProgID(RDOCustomClasses.SafeMailItem));
SafeRecipients=null;
safeMailItem.Item=mailItem;//分配outlook发送的原始邮件项目而不保存它(只需在outlook自动保存或手动保存之前撰写并发送电子邮件)
收件人=safeMailItem.recipients
//如果mailItem有未保存的更改,则safeMailItem.Recipients将不同。
recipients.Count!=mailItem.recipients.Count;
}
所以我相信调用Save()
是有道理的,但我并没有改变任何事情,调用Save()
会导致另一个问题。当我尝试退出Outlook时,它会显示:
有未保存的更改“是否保存更改”
我尝试直接访问Mailitem.Recipients
(在收到邮件之前,它有最新和未保存的收件人列表),但它会创建Outlook安全提示。如果我使用了赎回,则在访问它之前需要调用保存,这会产生其他问题
是否有更好的方法可以安全地接收Outlook已发送邮件收件人,而无需修改?谢谢你的建议