我正在尝试访问RDOMail对象的附件。当我使用LINQ搜索特定项目或者只是尝试使用foreach迭代列表时它会冻结outlook并且不会抛出任何异常。 此外,当我尝试将RDOMail移动到另一个文件夹时,它会冻结Outlook并且不会抛出任何异常。
我可以使用Outlook.MailItem完成这两件事 有人有什么想法吗?
void store_OnNewMail(string entryId)
{
RDOMail mail = _store.GetMessageFromID(entryId);
RDOAttachment protocolAttachment = mail.Attachments.Cast<RDOAttachment>().SingleOrDefault(attach => attach.FileName == "protocol.id");
mail.Move(_hiddenDeliveryTrustFolder);
}
答案 0 :(得分:0)
我的猜测是,在NewMail事件发生时可用的IMAP4消息只是一个信封消息(仅标题,没有正文或附件)。当您访问附件时,IMAP4提供程序尝试连接到IMAP4服务器以检索数据,但由于在引发事件之前发出了关键部分,因此阻止了该调用。 尝试通过
绕过IMAP4提供程序级别 RDOStore unwrappedStore = rSession.Stores.UnwarpStore(_store);
RDOMail mail = unwrappedStore.GetMessageFromID(entryId);
您还可以尝试将消息条目id保存在变量中并启动计时器(使用Forms命名空间中的一个)。当计时器事件触发时(此时您将退出newMail事件),您可以打开该消息并进行处理。