Кусок кода для создания конфликтных сообщений :
STDMETHODIMP CConflict::Make(BSTR Fid, BSTR eid, long *err)
{
USES_CONVERSION;
HRESULT hr;
hr=MAPIInitialize(NULL);
LPMAPISESSION pMs;
FLAGS flFlag = MAPI_EXTENDED | MAPI_NEW_SESSION | MAPI_LOGON_UI;
hr=MAPILogonEx(0L,(LPTSTR)NULL,(LPTSTR)NULL,flFlag,&pMs);
LPMAPIFOLDER pMf;
LPMESSAGE pMsg;
std::string tstr=OLE2T (Fid);
hr=OpenFolderByEid(tstr.begin(),pMs,&pMf);
LPMAPICONTAINER pMc;
LPMESSAGE pMsg1;
tstr=OLE2T (eid);
hr=OpenMessageByEid(tstr.begin(),pMs,&pMsg);
hr=OpenMessageByEid(tstr.begin(),pMs,&pMsg1);
LPMAPIPROP pProp;
LPMAPIPROP pProp1;
pProp1=pMsg1;
pProp=pMsg;
LPSPropValue pPv;
LPSPropValue pPv1;
hr=pProp->SaveChanges(0);
hr=pProp1->SaveChanges(0);
MAPIUninitialize();
return S_OK;
}
но при таком создании я не могу указать кто был отправитель сообщения и как результат в форме конфликта будет указан IMAPISession::GetMsgStoresTable тот где PR_DEFAULT_STORE установлен в true. Может здесь нужно делать IMPISession::SetDefaultStore , но у меня при наличии соответсвующих прав всё равно возвращается Access Denied, и кроме того нужно уметь это делать без потери performance так как отличным решением проблемы является — создание сессий к каждому из мылбоксов — участников будущего конфликта, но это будет слишком медленно.
и второй вопрос — как при создании сообщения ( опять же имеется ввиду конфликтное сообщение, а не просто сообщение) указать когда оно было последний раз отредактировано?