【问题标题】:Redemption: RDOMail accessing attachments and moving mail兑换:RDOMMail 访问附件和移动邮件
【发布时间】:2014-05-09 11:34:35
【问题描述】:

我正在尝试访问 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);
}

【问题讨论】:

  • 我已将 Redemption 的调试版本发送到您的私人电子邮件地址...
  • @DmitryStreblechenko 我和 Dave 一起工作,我自己也在测试这个。我注意到我可以使用 Redemption 来获取已经在商店 _store.GetMessageFromID(inbox.Items[1].EntryID); 中的消息,但是如果我尝试从 OnNewMail 事件的上下文中使用相同的方法来检索传入的消息 Outlook 只会挂起并且必须关闭通过任务管理器下来。你介意把调试 dll 也发给我吗?戴夫这周剩下的时间都在外面
  • 我发现如果从新线程中获取消息,它可以工作。这是在 Outlook 2007 中。
  • Dave 给我发了 LOG 文件,下面是我的回复。这是一个 IMAP4 商店这一事实是恕我直言的关键。

标签: plugins outlook outlook-redemption


【解决方案1】:

我的猜测是,在 NewMail 事件发生时可用的 IMAP4 消息只是一个信封消息(只有标题,没有正文或附件)。当您访问附件时,IMAP4 提供程序会尝试连接到 IMAP4 服务器以检索数据,但由于在引发事件之前已发出临界区信号,调用被阻止。 尝试通过

绕过 IMAP4 提供程序级别
 RDOStore unwrappedStore = rSession.Stores.UnwarpStore(_store);
 RDOMail mail = unwrappedStore.GetMessageFromID(entryId);

您还可以尝试将消息条目 ID 保存在变量中并启动计时器(使用 Forms 命名空间中的计时器)。当计时器事件触发时(届时您将退出 newMail 事件),您可以打开邮件并进行处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-04
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多