Outlook 进程卡在pstStore.Remove()方法中
Pstcreation在安装outlook的情况下正常工作 现在,我正在尝试使用独立版本的MAPI创建pst文件。但是我的进程被困在pstStore.Remove()中。 . 此外,我还关闭了pst创建进程,因为它卡在pstStore.Remove()中。pst在路径中。 但是,当我将pst移动到另一个安装outlook的系统后打开它时,pst中没有邮件,尽管pst的大小非常大 第二次: 我运行pst过程并重复上述步骤。这次pst文件中有邮件 第三次: 我运行pst过程并重复上述步骤。这次pst文件中没有邮件 使用独立版本的MAPI创建pst时,赎回是否需要特殊处理,或者在不进行任何修改的情况下,是否需要与安装outlook的代码相同的代码 @迪米特里:我无法访问我的雅虎帐户 代码:Outlook 进程卡在pstStore.Remove()方法中,outlook,outlook-redemption,pst,Outlook,Outlook Redemption,Pst,Pstcreation在安装outlook的情况下正常工作 现在,我正在尝试使用独立版本的MAPI创建pst文件。但是我的进程被困在pstStore.Remove()中。 . 此外,我还关闭了pst创建进程,因为它卡在pstStore.Remove()中。pst在路径中。 但是,当我将pst移动到另一个安装outlook的系统后打开它时,pst中没有邮件,尽管pst的大小非常大 第二次: 我运行pst过程并重复上述步骤。这次pst文件中有邮件 第三次: 我运行pst过程并重复上述步骤。这次pst
private bool CreatePstWithRedemption(EmailJTableArgs objTableArgs、EmailFilterArgs objFilterArgs、,
EmailExportRequestParams EmailExportRequestParams)
{
RDOSession=null;
IRDOStore存储=空;
RDOFolder fFOlder=null;
RDOFolder childFolder=null;
IRDOItems folderItems=null;
var pstCreationStatus=假;
尝试
{
oSession=新的RDOSession();
store=oSession.LogonPstStore(_文件名,1,“PST”);
var folderName=Path.GetFileNameWithoutExtension(_fileName);
如果(存储!=null)
{
fFOlder=store.IPMRootFolder;
foreach(fFOlder.Folders中的RDOFolder文件夹)
{
folder.Delete();
}
childFolder=fFOlder.Folders.Add(folderName,Type.Missing);
folderItems=childFolder.Items;
var resultOfGetEmails=new ResultGetEmails();
ResultToGetEmails.TotalCount=-1;
做
{
var journalEmails=GetEmailList(objFilterArgs、objJTablArgs、emailExportRequestParams、,
结果获取电子邮件);
对于(var i=0;i0);
pstCreationStatus=真;
store.Remove();
}
}
最后
{
//清理
if(oSession!=null&&oSession.LoggedOn)
{
尝试
{
oSession.Logoff();
Marshal.ReleaseComObject(oSession);
}
接住
{
}
}
}
返回pstCreationStatus;
}
为什么要从(临时)配置文件中删除(一个且唯一的)存储?LogonPstStore将创建(并立即删除)一个临时配置文件,因此没有理由管理将被删除的配置文件中的存储。您的代码的相关片段是什么?我已经添加了代码。但是,当我对store.Remove()进行注释时,再次添加了代码。。进程卡在oSession.Logoff()中;不管怎么说,这个过程是否应该停滞?我认为在安装了outlook的情况下使用redemption时不会发生这种情况。
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;
}