【问题标题】:Outlook Redemption - eml to pst - Specify folder HiarachyOutlook Redemption - eml 到 pst - 指定文件夹层次结构
【发布时间】:2016-05-04 12:23:36
【问题描述】:

我正在使用 Outlook 兑换 (http://www.dimastr.com/redemption/home.htm) 并遵循 C# 代码从 .eml 文件生成 PST 文件。

            RDOSession session = new RDOSession();
            RDOPstStore store = session.LogonPstStore(newpstpath);
            RDOFolder folder = store.IPMRootFolder.Folders.Item(directoryEmlFile);
            if (folder == null)
            {
                folder = store.IPMRootFolder.Folders.Add(directoryEmlFile);
            }

            RDOMail mail = folder.Items.Add("IPM.Note");
            mail.Import(directoryEmlFile + "\\0a53e310-b841-43bf-9586-8e7ddb4cd175" + ".eml");
            mail.Sent = true;
            mail.Save();
            store.Save();

它会创建一个 PST 文件,但是当我将其导入到 Outlook 时,文件夹结构与此类似。

Personal Folders
  -C:\Users\asanka\eml

在 C:\Users\asanka\eml 文件夹中,我可以看到导入的电子邮件。那是 .eml 文件原来所在的文件夹。我需要摆脱它并拥有这样的文件夹结构。

Personal Folders
  -asanka
    -inbox

我该怎么做?任何帮助表示赞赏。

【问题讨论】:

    标签: c# outlook outlook-redemption


    【解决方案1】:

    这是您传递给Folders.Add 的文件夹名称,对吗?您需要传递适当的名称 (asanka) 来创建文件夹。由于您有两个文件夹,因此您可能需要这样做两次:

    RDOFolder folder1 = store.IPMRootFolder.Folders.Item("asanka");
    if (folder1 == null) folder1 = store.IPMRootFolder.Folders.Add("asanka");
    RDOFolder folder = folder1.Folders.Item("Inbox");
    if (folder == null) folder = folder1.Folders.Add("Inbox");
    

    【讨论】:

    • 感谢您的回答。我按照您的指示更新了我的代码。但是现在执行 mail.Import 行时出现异常。它说{“错误导入:0x80030050”} System.Exception {System.Runtime.InteropServices.COMException}
    • 错误代码为 STG_E_FILEALREADYEXISTS。调用 Import 时未指定格式,因此 Redemption 默认为 olMsg。指定 rdoSaveAsType.olRFC822
    • 我撤消了您对我的答案的更改 - 您的代码效率较低,因为它调用了 folder.Folders.Item("Inbox") 两次。这将导致在线配置文件上的 RPC 调用。不是世界末日,但它无缘无故地增加了性能。您甚至可能希望缓存 folder.Folders 的值,以避免为每个子文件夹调用两次。
    • 我使用了您的代码,但在执行此行时出现空指针异常。 if (folder == null) folder = folder.Folders.Add("Inbox");这就是为什么我这样更改代码的原因。 :) 如果文件夹为空,我们如何在空对象上调用 folder.Folders() 方法:)
    • 我正在尝试运行与 Web 应用程序相同的应用程序。在这种情况下,我会遇到以下错误。 IProfAdmin::CreateProfile 中的错误:MAPI_E_CALL_FAILED。我需要安装交换服务器才能正常工作吗?
    猜你喜欢
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多