diff --git a/mailnews/mapi/mapiDll/MapiDll.cpp b/mailnews/mapi/mapiDll/MapiDll.cpp index 561d11cdc355..1e6af3d2e2fb 100644 --- a/mailnews/mapi/mapiDll/MapiDll.cpp +++ b/mailnews/mapi/mapiDll/MapiDll.cpp @@ -315,7 +315,7 @@ ULONG FAR PASCAL MAPISendDocuments(ULONG ulUIParam, LPTSTR lpszDelimChar, LPTSTR ULONG FAR PASCAL MAPIFindNext(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszMessageType, LPTSTR lpszSeedMessageID, FLAGS flFlags, ULONG ulReserved, - LPTSTR lpszMessageID) + unsigned char lpszMessageID[64]) { nsIMapi *pNsMapi = NULL; diff --git a/mailnews/mapi/mapihook/build/msgMapi.idl b/mailnews/mapi/mapihook/build/msgMapi.idl index d67782d593b2..4cd5a596055d 100644 --- a/mailnews/mapi/mapihook/build/msgMapi.idl +++ b/mailnews/mapi/mapihook/build/msgMapi.idl @@ -110,7 +110,7 @@ interface nsIMapi : IUnknown HRESULT FindNext( [in] unsigned long aSession, [in] ULONG ulUIParam, [in] LPTSTR lpszMessageType, [in] LPTSTR lpszSeedMessageID, [in] ULONG flFlags, [in] ULONG ulReserved, - [in] [out] LPTSTR lpszMessageID ) ; + [in] [out] char lpszMessageID[64] ) ; HRESULT ReadMail( [in] unsigned long lhSession, [in] ULONG ulUIParam, [in] LPTSTR lpszMessageID, [in] ULONG flFlags, [in] ULONG ulReserved, [out] lpnsMapiMessage *lppMessage); diff --git a/mailnews/mapi/mapihook/src/msgMapiImp.cpp b/mailnews/mapi/mapihook/src/msgMapiImp.cpp index 822d891c0a52..a7238e8fd1ea 100644 --- a/mailnews/mapi/mapihook/src/msgMapiImp.cpp +++ b/mailnews/mapi/mapihook/src/msgMapiImp.cpp @@ -172,6 +172,22 @@ STDMETHODIMP CMapiImp::Login(unsigned long aUIArg, LOGIN_PW_TYPE aLogin, LOGIN_P return hr; } } + else + { + // get default account + nsresult rv; + nsCOMPtr accountManager = + do_GetService(NS_MSGACCOUNTMANAGER_CONTRACTID, &rv); + NS_ENSURE_SUCCESS(rv,MAPI_E_LOGIN_FAILURE); + nsCOMPtr account; + nsCOMPtr identity; + rv = accountManager->GetDefaultAccount(getter_AddRefs(account)); + NS_ENSURE_SUCCESS(rv,MAPI_E_LOGIN_FAILURE); + account->GetDefaultIdentity(getter_AddRefs(identity)); + NS_ENSURE_SUCCESS(rv,MAPI_E_LOGIN_FAILURE); + identity->GetKey(&id_key); + + } // finally register(create) the session. PRUint32 nSession_Id; @@ -370,7 +386,7 @@ LONG CMapiImp::InitContext(unsigned long session, MsgMapiListContext **listConte STDMETHODIMP CMapiImp::FindNext(unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageType, LPTSTR lpszSeedMessageID, unsigned long flFlags, unsigned long ulReserved, - LPTSTR lpszMessageID) + unsigned char lpszMessageID[64]) { // @@ -410,7 +426,7 @@ STDMETHODIMP CMapiImp::ReadMail(unsigned long aSession, unsigned long ulUIParam, nsCAutoString keyString((char *) lpszMessageID); nsMsgKey msgKey = keyString.ToInteger(&irv); if (irv) - return E_FAIL; + return MAPI_E_INVALID_MESSAGE; MsgMapiListContext *listContext; LONG ret = InitContext(aSession, &listContext); if (ret != SUCCESS_SUCCESS) @@ -427,12 +443,12 @@ STDMETHODIMP CMapiImp::DeleteMail(unsigned long aSession, unsigned long ulUIPara nsCAutoString keyString((char *) lpszMessageID); nsMsgKey msgKey = keyString.ToInteger(&irv); if (irv) - return E_FAIL; + return SUCCESS_SUCCESS; MsgMapiListContext *listContext; LONG ret = InitContext(aSession, &listContext); if (ret != SUCCESS_SUCCESS) return ret; - return (listContext->DeleteMessage(msgKey)) ? SUCCESS_SUCCESS : E_FAIL; + return (listContext->DeleteMessage(msgKey)) ? SUCCESS_SUCCESS : MAPI_E_INVALID_MESSAGE; } STDMETHODIMP CMapiImp::SaveMail(unsigned long aSession, unsigned long ulUIParam, lpnsMapiMessage lppMessage, @@ -613,6 +629,8 @@ lpnsMapiMessage MsgMapiListContext::GetMessage (nsMsgKey key, unsigned long flFl message->lpszNoteText = (PRUnichar *) ConvertBodyToMapiFormat (msgHdr); } + if (! (flFlags & MAPI_PEEK)) + m_db->MarkRead(key, PR_TRUE, nsnull); } return message; } @@ -668,7 +686,7 @@ void MsgMapiListContext::ConvertRecipientsToMapiFormat (nsIMsgHeaderParser *pars { mapiRecips[i].lpszAddress = (PRUnichar *) CoTaskMemAlloc(strlen(walkAddresses) + 1); if (mapiRecips[i].lpszAddress) - strcpy((char *) mapiRecips[i].lpszAddress, walkAddresses);\ + strcpy((char *) mapiRecips[i].lpszAddress, walkAddresses); } walkAddresses += strlen (walkAddresses) + 1; } diff --git a/mailnews/mapi/mapihook/src/msgMapiImp.h b/mailnews/mapi/mapihook/src/msgMapiImp.h index 070de54b6e23..88431357c403 100644 --- a/mailnews/mapi/mapihook/src/msgMapiImp.h +++ b/mailnews/mapi/mapihook/src/msgMapiImp.h @@ -78,7 +78,7 @@ public : STDMETHODIMP FindNext( unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageType, LPTSTR lpszSeedMessageID, unsigned long flFlags, unsigned long ulReserved, - LPTSTR lpszMessageID ); + unsigned char lpszMessageID[64] ); STDMETHODIMP ReadMail(unsigned long lhSession, unsigned long ulUIParam, LPTSTR lpszMessageID, unsigned long flFlags, unsigned long ulReserved, lpnsMapiMessage *lppMessage);