Hello,
Yes ! Use DCI Mail Processor SDK EMAPI wrapper to do this.
OpenMailbox(Your PST file name)
GetFolderCount - to get folders count
GetMessageProp - to get all mail message properties
Just 3 simple API call
Google - "DCI Mail Processor"
> On Tuesday, June 26, 2007 1:15 AM Iva wrote:
> I use next code (was simplified here) for accessing message recipients, but
> it works too slowly:
>
> SizedSPropTagArray( 3, cols ) = { 3, { PR_ENTRYID, PR_SUBJECT,
> PR_SENDER_NAME } };
> MAPIUtils::QueryAllRows( spTable, (SPropTagArray*)&cols, 0, 0, 0, &pRowSet );
> for( UINT i = 0; i < pRowSet->cRows; i++ )
> {
> // processing recipients
> spFolder->OpenEntry( row->lpProps[0].Value.bin.cb,
> (LPENTRYID)row->lpProps[0].Value.bin.lpb, NULL, 0, &messagetype,
> (IUnknown**)&spMessage );
> CComPtr<IMAPITable> spRecipientTable;
> spMessage->GetRecipientTable( MAPI_UNICODE, &spRecipientTable );
> SizedSPropTagArray( 3, rcptcols ) = { 3, { PR_EMAIL_ADDRESS,
> PR_RECIPIENT_TYPE, PR_DISPLAY_NAME } };
> MAPIUtils::QueryAllRows( spRecipientTable, (SPropTagArray*)&rcptcols, 0,
> 0, 0, &pRows );
> for( UINT r = 0; r < pRows->cRows; r++ )
> {
> // loop through all the recipient' properties
> for ( int ii = 0; ii < pRows->aRow[r].cValues; ii++ )
> {
> ULONG ulPT = pRows->aRow[r].lpProps[ii].ulPropTag;
> switch ( ulPT )
> {
> case PR_EMAIL_ADDRESS:
> // ...
> }
> }
> }
>
> //processing PR_SUBJECT and PR_SENDER_NAME properties here...
> }
>
> Are there another ways to read message recipients without opening entry and
> retrieving recipients table?
>> On Tuesday, June 26, 2007 7:18 PM Dmitry Streblechenko wrote:
>> No, I am afraid not. You can create a restriction on the on the recipients
>> though.
>> Do you really need to process all recipients in all messages in a given
>> folder?
>>
>> Dmitry Streblechenko (MVP)
>>
http://www.dimastr.com/
>> OutlookSpy - Outlook, CDO
>> and MAPI Developer Tool
>>
>> "Ivan" <Ivan@discussions.microsoft.com> wrote in message
>> news:C6D7E8D2-BFD3-4184-81A5-12B7438BE507@microsoft.com...
>>> On Tuesday, June 26, 2007 11:52 PM Iva wrote:
>>> I need to get all recipients (their names and emails) of every message.
>>> Message properties PR_DISPLAY_TO and PR_DISPLAY_CC are not exactly what I
>>> need.
>>>> On Wednesday, June 27, 2007 2:54 AM Dmitry Streblechenko wrote:
>>>> Then opening each and every message is your only option...
>>>>
>>>> Dmitry Streblechenko (MVP)
>>>>
http://www.dimastr.com/
>>>> OutlookSpy - Outlook, CDO
>>>> and MAPI Developer Tool
>>>>> On Wednesday, June 27, 2007 4:46 AM Iva wrote:
>>>>>> On Tuesday, July 10, 2007 8:26 AM Iva wrote:
>>>>>> Dmitry, is it possible to open each message avoiding of calling
>>>>>> OpenEntry(msgEntryID)? It takes high time.
>>>>>>
>>>>>> Now I open mapi folder using spIMsgStore->OpenEntry(), then open mapi table
>>>>>> - spIFolder->GetContentsTable(), query all rows from the table (also using
>>>>>> SetColumns() to access only one property - PR_ENTRYID), and after that I
>>>>>> should open each message using spFolder->OpenEntry() to have an ability to
>>>>>> call GetRecipientTable() method.
>>>>>>
>>>>>> What if I need to read only all recipients for each message without reading
>>>>>> other message properties?
>>>>>>
>>>>>> In MSDN I found that contents of PR_MESSAGE_RECIPIENTS should be accessed by
>>>>>> the IMAPIProp::OpenProperty method, requesting the IID_IMAPITable interface
>>>>>> identifier. But I have no idea how to realize it.
>>>>>>
>>>>>> The fact is that Reunion's Outlook Addin (www.reunion.com) read all
>>>>>> recipients from all messages extremely fast (only first launch is meaningful
>>>>>> cause it cashes results in its own db).
>>>>>>> On Tuesday, July 10, 2007 1:00 PM Dmitry Streblechenko wrote:
>>>>>>> No, no way around it. You either call IMessage::GetRecipientTable or
>>>>>>> IMessage::OpenProperty(PR_MESSAGE_RECIPIENTS).
>>>>>>>
>>>>>>> Dmitry Streblechenko (MVP)
>>>>>>>
http://www.dimastr.com/
>>>>>>> OutlookSpy - Outlook, CDO
>>>>>>> and MAPI Developer Tool
>>>>>>>
>>>>>>> "Ivan" <Ivan@discussions.microsoft.com> wrote in message
>>>>>>> news:15F34965-5592-40EF-B6D8-6199DBA08B3F@microsoft.com...