0

Pstcreation 与安装的 Outlook 一起正常工作。

现在,我正在尝试使用独立版本的 MAPI 创建一个 pst 文件。但是我的进程卡在 pstStore.Remove() 中。. 此外,当它卡在 pstStore.Remove() 中时,我关闭了 pst 创建过程。pst 在路径中。但是,当我将 pst 移动到安装了 Outlook 的另一个系统后打开它时,虽然 pst 的大小很大,但 pst 中没有邮件。

第二次: 我运行了 pst 过程并重复了上述步骤。这次在 pst 文件中有邮件。

第三次: 我运行了 pst 过程并重复了上述步骤。这次 pst 文件中没有邮件。

赎回是否需要特殊处理来创建具有独立版本的 MAPI 的 pst 或与安装的 Outlook 一起使用的相同代码应该不做任何修改?

@Dimitry:我无法访问我的雅虎帐户。

代码:

private bool CreatePstWithRedemption(EmailJTableArgs objJTablArgs, EmailFilterArgs objFilterArgs,
                                     EmailExportRequestParams emailExportRequestParams)
{
    RDOSession oSession = null;
    IRDOStore store = null;
    RDOFolder fFOlder = null;
    RDOFolder childFolder = null;
    IRDOItems folderItems = null;
    var pstCreationStatus = false;
    try
    {
        oSession = new RDOSession();
        store = oSession.LogonPstStore(_fileName, 1, "PST");

        var folderName = Path.GetFileNameWithoutExtension(_fileName);

        if (store != null)
        {
            fFOlder = store.IPMRootFolder;

            foreach (RDOFolder folder in fFOlder.Folders)
            {
                folder.Delete();
            }
            childFolder = fFOlder.Folders.Add(folderName, Type.Missing);
            folderItems = childFolder.Items;


            var resultOfGetEmails = new ResultGetEmails();
            resultOfGetEmails.TotalCount = -1;

            do
            {
                var journalEmails = GetEmailList(objFilterArgs, objJTablArgs, emailExportRequestParams,
                                                 resultOfGetEmails);
                for (var i = 0; i < journalEmails.Count; i++)
                {
                    IRDOMail mail = null;
                    try
                    {
                        mail = folderItems.Add(rdoItemType.olMailItem);

                        // populate mail fields

                        mail.Sent = true;
                        mail.Save();
                    }
                    finally
                    {
                        if (mail != null)
                            Marshal.ReleaseComObject(mail);
                    }
                }

                resultOfGetEmails.TotalCount -= BatchSize;

                objJTablArgs.PageStartIndex += BatchSize;
            } while (resultOfGetEmails.TotalCount > 0);
            pstCreationStatus = true;
            store.Remove();
        }
    }

    finally
    {
          // Do cleanup
         if (oSession != null && oSession.LoggedOn)
            {
                try
                {
                    oSession.Logoff();
                    Marshal.ReleaseComObject(oSession);
                }
                catch
                {
                }
            }

    }
    return pstCreationStatus;
}
4

1 回答 1

0

为什么要从(临时)配置文件中删除(唯一的)商店?LogonPstStore 将创建(并立即删除)一个临时配置文件,因此没有理由管理无论如何都会删除的配置文件中的存储。

于 2014-11-03T06:10:20.383 回答