Outlook 使用Redemption.ISafeMailItem对象获取邮件收件人

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

我正在用C#编写一个简单的Outlook程序,用于记录邮件的收件人。若要构建,我将挂接到Outlook邮件项目
Send
事件以获取
Recipient
集合。另外,为了避免Outlook安全提示,我正在使用Redemption
SafeMailItem

对于阅读
收件人
收藏,我将
邮件项目
分配给
安全邮件项目
并阅读
收件人
。但是,如果
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已发送邮件收件人,而无需修改?谢谢你的建议