Are you sharing the same instance of IRDOSession between different threads? What is TRDOSession? Is that your class?
Dmitry Streblechenko (MVP) http://www.dimastr.com/ OutlookSpy - Outlook, CDO and MAPI Developer Tool
<tsahling[ at ]hausmannwynen.de> wrote in message news:1157026992.818264.204980[ at ]b28g2000cwb.googlegroups.com...
[Quoted Text] > Hi! > > I use Redemption 4.2 with C-Builder 5 via imported typelib. > > I have the problem that a second usage of RDOSession.Logon returns an > EOleSysError with the message "Error in MAPILogonEx: > MAPI_E_NOT_INITIALIZED". > > This is the code: > > ----- > ::CoInitializeEx( 0, COINIT_MULTITHREADED ); > // -- > try > { > auto_ptr<TOutlookApplication> outlook( new TOutlookApplication( 0 ) > ); > // -- > outlook->ConnectKind = ckNewInstance; > outlook->Connect(); > // -- > try > { > Variant draftMailEntryID; > // -- > { > auto_ptr<TRDOSession> rdoSession( new TRDOSession( outlook.get() > ) ); > // -- > rdoSession->Logon( "", "", false, true ); > // -- > try > { > Redemption_tlb::IRDOFolderPtr rdoDraftsFolder = > rdoSession->GetDefaultFolder( Outlook_tlb::olFolderDrafts ); > Redemption_tlb::IRDOMailPtr rdoMail = > rdoDraftsFolder->Items->Add( Outlook_tlb::olMailItem ); > // -- > rdoMail->Import( WideString( m_vorlagenDatei ), type ); > rdoMail->Subject = WideString( m_dokTitel ); > rdoMail->Attachments->Add( m_pdfFilename ); > rdoMail->Recipients->Add( m_kunEmail ); > // -- > rdoMail->Save(); > // -- > draftMailEntryID = rdoMail->EntryID; > } > __finally > { > rdoSession->Logoff(); > } > } > // -- > _NameSpacePtr comSession = outlook->GetNamespace( WideString( > "MAPI" ) ); > // -- > comSession->Logon( "", "", false, true ); > // -- > try > { > MailItemPtr mail = comSession->GetItemFromID( draftMailEntryID ); > > // -- > mail->Display( true ); > // -- > mail->Close( olDiscard ); > } > __finally > { > comSession->Logoff(); > } > } > __finally > { > outlook->Disconnect(); > } > } > __finally > { > ::CoUninitialize(); > } > ---- > > This first time this code is executed, everything is fine. If the user > executes this code a second time, I get the error described above > (line: >rdoSession->Logon( "", "", false, true );<) > > I tried already to wrap this code with > MAPIInitialize()/MAPIDeinitialize(), but the same error occurs. > > Has anyone an idea what the problem might be? > > Thanks! >
|