【发布时间】:2015-10-27 19:21:12
【问题描述】:
使用兑换将 msg 转换为 eml 时,Outlook UI 线程被阻止
我正在开发一个 Outlook 插件,以将电子邮件作为 eml 同步到服务器。当插件启动时,它会启动一个计时器并检查是否有新的电子邮件,然后上传它们。对于每封电子邮件,我将使用 Outlook Redemption 将它们转换为 eml。它可以工作,但我发现在转换过程中,outlook UI 会被阻止。我正在使用以下代码进行转换。我还尝试了 RDOSession.GetMessageFromID(mail.EntryID)。一样的。任何人
public static string ToEmlFile(this Outlook.MailItem mail)
{
var msgFilename = Path.ChangeExtension(Path.GetTempFileName(), ".msg");
mail.SaveAs(msgFilename);
var item = RDOSessionMgr.GetInstance().GetMessageFromMsgFile(msgFilename);
var emlFilename = Path.ChangeExtension(Path.GetTempFileName(), ".eml");
item.SaveAs(emlFilename, Redemption.rdoSaveAsType.olRFC822);
return emlFilename;
}
public class RDOSessionMgr
{
private static Redemption.RDOSession _session;
static RDOSessionMgr()
{
_session = new Redemption.RDOSession();
_session.Logon(Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
}
public static Redemption.RDOSession GetInstance()
{
return _session;
}
}
【问题讨论】: