Vielen Dank Basti!
Das hat an für sich funktioniert. Aber nur ein mal.
Ich habe dann noch die Transfer-Funktion entdeckt und bin mit dieser aber zum gleichen Ergebnis gekommen.
Es ist so als ob alles korrekt ohne Fehler ausgeführt wird, aber die Mails in Wirklichkeit noch am gleichen Ort sind.
Ich bin nun darauf gekommen, daß wenn die Bereinigung ausgeführt wurde und der Client (der auf der gleichen Maschine läuft) neu gestartet wurde es wieder für ein mal funktioniert.
Ist der Client auf einer anderen Maschine gestartet reicht es aus die Bereinigung durchzuführen. Die Bereinigung läuft hier komischerweise länger.
Muß man nach jedem Transfer-Vorgang die Bereinigung ausführen? Kann ich diese über eine C++ Funktion starten?
Micha
Hier der Teil der die Transfer-Funktion betrifft (mit noch etwas unbeholfenem Umgang mit UNICODE):
Archive* pArchiveIn=NULL;
Archive* pArchiveDrafts=NULL;
IMessageItem2* pSourceMessageItem2=NULL;
IMessageItem2* pDestMessageItem2=NULL;
IMessageItems2* pSourceMessageItems2=NULL;
BSTR Subject=NULL;
VARIANT vValue;
VARIANT vID;
TCHAR Temp2[200];
char Temp3[200];
if(SUCCEEDED(pAcc->GetSpecialArchive(DvArchivePersonal,&pArchiveIn)))
{
vValue.vt=VT_BSTR;
vValue.bstrVal=SysAllocString (L"default");
if(SUCCEEDED(pArchiveIn->GetArchiveEntries(vValue,&pSourceMessageItems2)))
{
if(SUCCEEDED(pSourceMessageItems2->get_Count(&lCount)))
{
printf("\n\nlCount: %d",lCount);
if(lCount>0)
{
for(V=0;V<=lCount-1;++V) //Hier Schleifenstart für alle zu verschiebenden Items
{
vID.vt=VT_I4;
vID.lVal=V;
if(SUCCEEDED(pArchiveIn->GetArchiveEntryByID(vID,&pSourceMessageItem2)))
{
pSourceMessageItem2->get_Subject(&Subject);
_stprintf_s(Temp2,_T("%s"),(LPCTSTR)Subject);
Tchar_to_char(Temp2,Temp3,sizeof(Temp3));
printf("\nSubject: %s",Temp3);
if(Temp3[0]=='M'&&Temp3[1]=='u'&&Temp3[2]=='f'&&Temp3[3]=='f'&&Temp3[4]=='i'&&Temp3[5]=='n'&&Temp3[6]=='s')
{
printf("\nS1");
if(SUCCEEDED(pAcc->GetSpecialArchive(DvArchivePersonalDrafts,&pArchiveDrafts)))
{
printf("\nS2");
if(SUCCEEDED(pSourceMessageItem2->Transfer(pArchiveDrafts,&pDestMessageItem2)))
{
printf("\nS3");
pDestMessageItem2->Release();
}
pArchiveDrafts->Release();
}
}
}
}
}
}
pSourceMessageItems2->Release();
}
}
VariantClear(&vID);
pArchiveIn->Release();
Alles anzeigen