A Microsoft Outlook email forum. Outlook Banter

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

Go Back   Home » Outlook Banter forum » Microsoft Outlook Email Newsgroups » Add-ins for Outlook
Site Map Home Register Authors List Search Today's Posts Mark Forums Read Web Partners

How to use CDO to delete copy of messages on POP3 Server?



 
 
Thread Tools Search this Thread Display Modes
  #11  
Old August 31st 06, 04:15 PM posted to microsoft.public.outlook.program_addins
Rui Feng
external usenet poster
 
Posts: 9
Default How to use CDO to delete copy of messages on POP3 Server?

Dear MVP,

When I delete an email using CDO delete() method, I use
Attachment::WriteToFile, Attachment::ReadFromFile, and Message::Update() to
modify the "Deletedxxxxxxxx" attachment of the hidden message successfully.
But when I synchronize my POP3 account with POP3 server, the copy of message
is not deleted in POP3 server.

I guess there is a flag to tell Outlook whether read "Deletedxxxxxxxx"
attachment. If I delete a message in Inbox and then delete it permanently in
the "Deleted Item Box", Outlook stores the UID in the "Deletedxxxxxxxx"
attachment of hidden message, and sets the flag. When synchronizing with POP3
Server, Outlook reads the flag and knows that some messages have been
permanently deleted. So Outlook starts to read "Deletedxxxxxxxx" attachment
and gets the UID.

But when my add-in adds UID to that attachment, it does not set the flag, so
Outlook does not know if anything has changed and does not read that
attachment.

I have searched the whole values using OutlookSpy but could not find the
flag. Could you tell me what happened when synchronizing with POP3 Server,
which flag or value should I modify, and how to tell Outlook to read the
"Deletedxxxxxxxx" attachment of hidden message in Inbox when synchronizing
with POP3 Server? This is the last step to achieve the goal. :-)

Thank you so much!

----------
Rui Feng
Beijing, China


"Dmitry Streblechenko" wrote:

CDO does nott allow to modify the attachment data directly, so you wowuld
need to save the attachment as a file, modify it, delete the old attachment,
add the new one.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rui Feng" wrote in message
...
I have got the whole relations of UIDL message id, attachment file name of
the hidden message, and POP Account ID! And I have got the values in my
program. Thanks for your great OutlookSpy!

Select a message -- IMessage -- GetProps -- Property Tag == 0x8013
The first 8 number of 0x8013 value is POP Account ID. It's HEX and must be
changed to DEC.

In the same window, the value whose Property Tag is equle to "0x8016
(|ID=0x8f01)" is the UIDL message id.

Misc -- IOlkAccountManager
PROP_ACCT_ID is the POP Account ID got from IMessage.

Misc -- IOlkAccountManager -- select an account and click "FindAccount"
The pVar of dwProp whose value is equal to "PT_LONG, 0x0003" is the
attachment file ID of the hidden file. For example, my value is
"2192694955".
When changed to HEX, it will be "82b1deab". So the attachment file names
of
hidden message in Inbox are "Blob82b1deab", "Restags82b1deab" and
"Deleted82b1deab".

What I have to do now is to add the UIDL message id to the attachment file
whose name is "Deleted82b1deab". Could you tell me how to add something in
an
attachment using CDO?

Thank you and have a good day! :-)


"Dmitry Streblechenko" wrote:

You cannot hardcode the property tag; it is a named property, you must
call
IMessage::GetIDsFromNames first.
I don't know how those messages are mapped to the accounts, sorry. Did
you
try to see if anything is available through the IOlkAccountManager (you
can
access it through Misc | IOlkAccountManager in OutlookSpy)?

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rui Feng" wrote in message
...
I've written this and it works:

CComPtr IUnknown spUnknown;
CComPtr IMessage spIMessage;
spNewMail-get_MAPIOBJECT(&spUnknown);
spUnknown-QueryInterface(IID_IMessage, (void **)&spIMessage);

SPropTagArray Array;
LPSPropTagArray lpArray = &Array;
lpArray-cValues = 1;
lpArray-aulPropTag[0] = 0x80160102;

ULONG FAR lpcValues;
LPSPropValue lppPropArray;
HRESULT hr = spIMessage-GetProps(lpArray, NULL, &lpcValues,
&lppPropArray);

int nStrCount = lppPropArray-Value.bin.cb;
_bstr_t bstrPOPString((wchar_t *)lppPropArray-Value.bin.lpb);
char * cPOPString = bstrPOPString;
ATLTRACE("POPSTRING = %s\n", cPOPString);

I do not forget to free them like this:
MAPIFreeBuffer((void *)lpcValues);
MAPIFreeBuffer(lppPropArray);

The UIDL message id have been stored in bstrPOPString. The next step is
to
add it to the corresponding attachment of hidden message. I don't know
how
to
find the exact attachment because I have 3 "Deletedxxxxxxxx" files.

I cannot get its property tag like PR_XXXXXX style because it has no
name
in
MAPITAGS.H file. Instead, I use 0x80160102 directly. Do you think its
property tag is different in other computers installed Outlook 2003?

Thank you.


"Dmitry Streblechenko" wrote:

No, it does not delete the message id.
Yes, you can access the list of message ids. If you are using CDO
1.21,
use
the Folder.HiddenMessages to find the corresponding message. Look at
the
hidden messages with OutlookSpy (click IMAPIFolder, go to the
"Associated
Contents" tab) or MFCMAPI.
I don't see however how that will help you - if you delete that
message
id,
POP3 provider will assume that it is a new message and download it
again.
This is the opposite of what you are trying to achieve.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rui Feng" wrote in message
...
So do you think CDO "Message.Delete" method does not delete (maybe
forget
to
delete) message ids in that hidden message? If this is true, can my
add-in
access that hidden message in the Inbox and delete ids?

Thank you.

"Dmitry Streblechenko" wrote:

Outlook stores the list of the message ids in a hidden message
(PR_MESSAGE_CLASS = "IPM.MessageManager") in the Inbox.
However there is no way to tell the POP3 provider in Outlook to
delete
a
particular message from a POP3 server.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rui Feng" Rui wrote in message
...
Hi all.

My Outlook 2003 retrieves emails from a POP3 server. I set to
"Leave
a
copy
of messages on the server" and "Remove from server when deleted
from
'Deleted Items'". I wrote a COM Add-in using VC++ 6.0

When recieved a new mail from certain sender, I can catch the
ItemAdd event and use CDO Message-Delete() to permanently delete
that
new email. But the email has not been deleted from the POP3
server.

I guess there is a looking-up table in Outlook. When I delete an
Email
in
"Deleted Items Folder", Outlook find ID of that email and set a
value.
It
uses that value to notify the POP3 server next time to delete
corresponding
email
with the same ID on the server.

I think maybe CDO doesn't tell Outlook that "an email was deleted
and
please
tell
POP3 Server to delete the copy when connected next time".

Is that true and how to solve it? If you can do it using other
programming
language
like VB please tell me anyway.

Thank you. :-)

--------
Beijing, China













Ads
  #12  
Old August 31st 06, 07:03 PM posted to microsoft.public.outlook.program_addins
Dmitry Streblechenko
external usenet poster
 
Posts: 2,116
Default How to use CDO to delete copy of messages on POP3 Server?

I have no idea, sorry.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rui Feng" wrote in message
...
Dear MVP,

When I delete an email using CDO delete() method, I use
Attachment::WriteToFile, Attachment::ReadFromFile, and Message::Update()
to
modify the "Deletedxxxxxxxx" attachment of the hidden message
successfully.
But when I synchronize my POP3 account with POP3 server, the copy of
message
is not deleted in POP3 server.

I guess there is a flag to tell Outlook whether read "Deletedxxxxxxxx"
attachment. If I delete a message in Inbox and then delete it permanently
in
the "Deleted Item Box", Outlook stores the UID in the "Deletedxxxxxxxx"
attachment of hidden message, and sets the flag. When synchronizing with
POP3
Server, Outlook reads the flag and knows that some messages have been
permanently deleted. So Outlook starts to read "Deletedxxxxxxxx"
attachment
and gets the UID.

But when my add-in adds UID to that attachment, it does not set the flag,
so
Outlook does not know if anything has changed and does not read that
attachment.

I have searched the whole values using OutlookSpy but could not find the
flag. Could you tell me what happened when synchronizing with POP3 Server,
which flag or value should I modify, and how to tell Outlook to read the
"Deletedxxxxxxxx" attachment of hidden message in Inbox when synchronizing
with POP3 Server? This is the last step to achieve the goal. :-)

Thank you so much!

----------
Rui Feng
Beijing, China


"Dmitry Streblechenko" wrote:

CDO does nott allow to modify the attachment data directly, so you wowuld
need to save the attachment as a file, modify it, delete the old
attachment,
add the new one.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rui Feng" wrote in message
...
I have got the whole relations of UIDL message id, attachment file name
of
the hidden message, and POP Account ID! And I have got the values in my
program. Thanks for your great OutlookSpy!

Select a message -- IMessage -- GetProps -- Property Tag == 0x8013
The first 8 number of 0x8013 value is POP Account ID. It's HEX and must
be
changed to DEC.

In the same window, the value whose Property Tag is equle to "0x8016
(|ID=0x8f01)" is the UIDL message id.

Misc -- IOlkAccountManager
PROP_ACCT_ID is the POP Account ID got from IMessage.

Misc -- IOlkAccountManager -- select an account and click
"FindAccount"
The pVar of dwProp whose value is equal to "PT_LONG, 0x0003" is the
attachment file ID of the hidden file. For example, my value is
"2192694955".
When changed to HEX, it will be "82b1deab". So the attachment file
names
of
hidden message in Inbox are "Blob82b1deab", "Restags82b1deab" and
"Deleted82b1deab".

What I have to do now is to add the UIDL message id to the attachment
file
whose name is "Deleted82b1deab". Could you tell me how to add something
in
an
attachment using CDO?

Thank you and have a good day! :-)


"Dmitry Streblechenko" wrote:

You cannot hardcode the property tag; it is a named property, you must
call
IMessage::GetIDsFromNames first.
I don't know how those messages are mapped to the accounts, sorry. Did
you
try to see if anything is available through the IOlkAccountManager
(you
can
access it through Misc | IOlkAccountManager in OutlookSpy)?

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rui Feng" wrote in message
...
I've written this and it works:

CComPtr IUnknown spUnknown;
CComPtr IMessage spIMessage;
spNewMail-get_MAPIOBJECT(&spUnknown);
spUnknown-QueryInterface(IID_IMessage, (void **)&spIMessage);

SPropTagArray Array;
LPSPropTagArray lpArray = &Array;
lpArray-cValues = 1;
lpArray-aulPropTag[0] = 0x80160102;

ULONG FAR lpcValues;
LPSPropValue lppPropArray;
HRESULT hr = spIMessage-GetProps(lpArray, NULL, &lpcValues,
&lppPropArray);

int nStrCount = lppPropArray-Value.bin.cb;
_bstr_t bstrPOPString((wchar_t *)lppPropArray-Value.bin.lpb);
char * cPOPString = bstrPOPString;
ATLTRACE("POPSTRING = %s\n", cPOPString);

I do not forget to free them like this:
MAPIFreeBuffer((void *)lpcValues);
MAPIFreeBuffer(lppPropArray);

The UIDL message id have been stored in bstrPOPString. The next step
is
to
add it to the corresponding attachment of hidden message. I don't
know
how
to
find the exact attachment because I have 3 "Deletedxxxxxxxx" files.

I cannot get its property tag like PR_XXXXXX style because it has no
name
in
MAPITAGS.H file. Instead, I use 0x80160102 directly. Do you think
its
property tag is different in other computers installed Outlook 2003?

Thank you.


"Dmitry Streblechenko" wrote:

No, it does not delete the message id.
Yes, you can access the list of message ids. If you are using CDO
1.21,
use
the Folder.HiddenMessages to find the corresponding message. Look
at
the
hidden messages with OutlookSpy (click IMAPIFolder, go to the
"Associated
Contents" tab) or MFCMAPI.
I don't see however how that will help you - if you delete that
message
id,
POP3 provider will assume that it is a new message and download it
again.
This is the opposite of what you are trying to achieve.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rui Feng" wrote in message
...
So do you think CDO "Message.Delete" method does not delete
(maybe
forget
to
delete) message ids in that hidden message? If this is true, can
my
add-in
access that hidden message in the Inbox and delete ids?

Thank you.

"Dmitry Streblechenko" wrote:

Outlook stores the list of the message ids in a hidden message
(PR_MESSAGE_CLASS = "IPM.MessageManager") in the Inbox.
However there is no way to tell the POP3 provider in Outlook to
delete
a
particular message from a POP3 server.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rui Feng" Rui wrote in message
...
Hi all.

My Outlook 2003 retrieves emails from a POP3 server. I set to
"Leave
a
copy
of messages on the server" and "Remove from server when
deleted
from
'Deleted Items'". I wrote a COM Add-in using VC++ 6.0

When recieved a new mail from certain sender, I can catch the
ItemAdd event and use CDO Message-Delete() to permanently
delete
that
new email. But the email has not been deleted from the POP3
server.

I guess there is a looking-up table in Outlook. When I delete
an
Email
in
"Deleted Items Folder", Outlook find ID of that email and set
a
value.
It
uses that value to notify the POP3 server next time to delete
corresponding
email
with the same ID on the server.

I think maybe CDO doesn't tell Outlook that "an email was
deleted
and
please
tell
POP3 Server to delete the copy when connected next time".

Is that true and how to solve it? If you can do it using other
programming
language
like VB please tell me anyway.

Thank you. :-)

--------
Beijing, China















  #13  
Old September 1st 06, 06:06 AM posted to microsoft.public.outlook.program_addins
Rui Feng
external usenet poster
 
Posts: 9
Default How to use CDO to delete copy of messages on POP3 Server?

Dear MVP,

Could you please help me to check this function in the source code of
Outlook? It's quite important for me to delete the copy of POP3 server.

Thank you!

Rui Feng


"Dmitry Streblechenko" wrote:

I have no idea, sorry.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rui Feng" wrote in message
...
Dear MVP,

When I delete an email using CDO delete() method, I use
Attachment::WriteToFile, Attachment::ReadFromFile, and Message::Update()
to
modify the "Deletedxxxxxxxx" attachment of the hidden message
successfully.
But when I synchronize my POP3 account with POP3 server, the copy of
message
is not deleted in POP3 server.

I guess there is a flag to tell Outlook whether read "Deletedxxxxxxxx"
attachment. If I delete a message in Inbox and then delete it permanently
in
the "Deleted Item Box", Outlook stores the UID in the "Deletedxxxxxxxx"
attachment of hidden message, and sets the flag. When synchronizing with
POP3
Server, Outlook reads the flag and knows that some messages have been
permanently deleted. So Outlook starts to read "Deletedxxxxxxxx"
attachment
and gets the UID.

But when my add-in adds UID to that attachment, it does not set the flag,
so
Outlook does not know if anything has changed and does not read that
attachment.

I have searched the whole values using OutlookSpy but could not find the
flag. Could you tell me what happened when synchronizing with POP3 Server,
which flag or value should I modify, and how to tell Outlook to read the
"Deletedxxxxxxxx" attachment of hidden message in Inbox when synchronizing
with POP3 Server? This is the last step to achieve the goal. :-)

Thank you so much!

----------
Rui Feng
Beijing, China


"Dmitry Streblechenko" wrote:

CDO does nott allow to modify the attachment data directly, so you wowuld
need to save the attachment as a file, modify it, delete the old
attachment,
add the new one.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rui Feng" wrote in message
...
I have got the whole relations of UIDL message id, attachment file name
of
the hidden message, and POP Account ID! And I have got the values in my
program. Thanks for your great OutlookSpy!

Select a message -- IMessage -- GetProps -- Property Tag == 0x8013
The first 8 number of 0x8013 value is POP Account ID. It's HEX and must
be
changed to DEC.

In the same window, the value whose Property Tag is equle to "0x8016
(|ID=0x8f01)" is the UIDL message id.

Misc -- IOlkAccountManager
PROP_ACCT_ID is the POP Account ID got from IMessage.

Misc -- IOlkAccountManager -- select an account and click
"FindAccount"
The pVar of dwProp whose value is equal to "PT_LONG, 0x0003" is the
attachment file ID of the hidden file. For example, my value is
"2192694955".
When changed to HEX, it will be "82b1deab". So the attachment file
names
of
hidden message in Inbox are "Blob82b1deab", "Restags82b1deab" and
"Deleted82b1deab".

What I have to do now is to add the UIDL message id to the attachment
file
whose name is "Deleted82b1deab". Could you tell me how to add something
in
an
attachment using CDO?

Thank you and have a good day! :-)


"Dmitry Streblechenko" wrote:

You cannot hardcode the property tag; it is a named property, you must
call
IMessage::GetIDsFromNames first.
I don't know how those messages are mapped to the accounts, sorry. Did
you
try to see if anything is available through the IOlkAccountManager
(you
can
access it through Misc | IOlkAccountManager in OutlookSpy)?

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rui Feng" wrote in message
...
I've written this and it works:

CComPtr IUnknown spUnknown;
CComPtr IMessage spIMessage;
spNewMail-get_MAPIOBJECT(&spUnknown);
spUnknown-QueryInterface(IID_IMessage, (void **)&spIMessage);

SPropTagArray Array;
LPSPropTagArray lpArray = &Array;
lpArray-cValues = 1;
lpArray-aulPropTag[0] = 0x80160102;

ULONG FAR lpcValues;
LPSPropValue lppPropArray;
HRESULT hr = spIMessage-GetProps(lpArray, NULL, &lpcValues,
&lppPropArray);

int nStrCount = lppPropArray-Value.bin.cb;
_bstr_t bstrPOPString((wchar_t *)lppPropArray-Value.bin.lpb);
char * cPOPString = bstrPOPString;
ATLTRACE("POPSTRING = %s\n", cPOPString);

I do not forget to free them like this:
MAPIFreeBuffer((void *)lpcValues);
MAPIFreeBuffer(lppPropArray);

The UIDL message id have been stored in bstrPOPString. The next step
is
to
add it to the corresponding attachment of hidden message. I don't
know
how
to
find the exact attachment because I have 3 "Deletedxxxxxxxx" files.

I cannot get its property tag like PR_XXXXXX style because it has no
name
in
MAPITAGS.H file. Instead, I use 0x80160102 directly. Do you think
its
property tag is different in other computers installed Outlook 2003?

Thank you.


"Dmitry Streblechenko" wrote:

No, it does not delete the message id.
Yes, you can access the list of message ids. If you are using CDO
1.21,
use
the Folder.HiddenMessages to find the corresponding message. Look
at
the
hidden messages with OutlookSpy (click IMAPIFolder, go to the
"Associated
Contents" tab) or MFCMAPI.
I don't see however how that will help you - if you delete that
message
id,
POP3 provider will assume that it is a new message and download it
again.
This is the opposite of what you are trying to achieve.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rui Feng" wrote in message
...
So do you think CDO "Message.Delete" method does not delete
(maybe
forget
to
delete) message ids in that hidden message? If this is true, can
my
add-in
access that hidden message in the Inbox and delete ids?

Thank you.

"Dmitry Streblechenko" wrote:

Outlook stores the list of the message ids in a hidden message
(PR_MESSAGE_CLASS = "IPM.MessageManager") in the Inbox.
However there is no way to tell the POP3 provider in Outlook to
delete
a
particular message from a POP3 server.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rui Feng" Rui wrote in message
...
Hi all.

My Outlook 2003 retrieves emails from a POP3 server. I set to
"Leave
a
copy
of messages on the server" and "Remove from server when
deleted
from
'Deleted Items'". I wrote a COM Add-in using VC++ 6.0

When recieved a new mail from certain sender, I can catch the
ItemAdd event and use CDO Message-Delete() to permanently
delete
that
new email. But the email has not been deleted from the POP3
server.

I guess there is a looking-up table in Outlook. When I delete
an
Email
in
"Deleted Items Folder", Outlook find ID of that email and set
a
value.
It
uses that value to notify the POP3 server next time to delete
corresponding
email
with the same ID on the server.

I think maybe CDO doesn't tell Outlook that "an email was
deleted
and
please
tell
POP3 Server to delete the copy when connected next time".

Is that true and how to solve it? If you can do it using other
programming
language
like VB please tell me anyway.

Thank you. :-)

--------
Beijing, China
















  #14  
Old September 1st 06, 11:38 PM posted to microsoft.public.outlook.program_addins
Dmitry Streblechenko
external usenet poster
 
Posts: 2,116
Default How to use CDO to delete copy of messages on POP3 Server?

I wish I had access to the Outlook source code. Unfortunately I don't...
Just to clear any possible misconceptions, MVPs are non-paid volunteers, we
are not employed or paid by MS.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rui Feng" wrote in message
news
Dear MVP,

Could you please help me to check this function in the source code of
Outlook? It's quite important for me to delete the copy of POP3 server.

Thank you!

Rui Feng


"Dmitry Streblechenko" wrote:

I have no idea, sorry.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rui Feng" wrote in message
...
Dear MVP,

When I delete an email using CDO delete() method, I use
Attachment::WriteToFile, Attachment::ReadFromFile, and
Message::Update()
to
modify the "Deletedxxxxxxxx" attachment of the hidden message
successfully.
But when I synchronize my POP3 account with POP3 server, the copy of
message
is not deleted in POP3 server.

I guess there is a flag to tell Outlook whether read "Deletedxxxxxxxx"
attachment. If I delete a message in Inbox and then delete it
permanently
in
the "Deleted Item Box", Outlook stores the UID in the "Deletedxxxxxxxx"
attachment of hidden message, and sets the flag. When synchronizing
with
POP3
Server, Outlook reads the flag and knows that some messages have been
permanently deleted. So Outlook starts to read "Deletedxxxxxxxx"
attachment
and gets the UID.

But when my add-in adds UID to that attachment, it does not set the
flag,
so
Outlook does not know if anything has changed and does not read that
attachment.

I have searched the whole values using OutlookSpy but could not find
the
flag. Could you tell me what happened when synchronizing with POP3
Server,
which flag or value should I modify, and how to tell Outlook to read
the
"Deletedxxxxxxxx" attachment of hidden message in Inbox when
synchronizing
with POP3 Server? This is the last step to achieve the goal. :-)

Thank you so much!

----------
Rui Feng
Beijing, China


"Dmitry Streblechenko" wrote:

CDO does nott allow to modify the attachment data directly, so you
wowuld
need to save the attachment as a file, modify it, delete the old
attachment,
add the new one.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rui Feng" wrote in message
...
I have got the whole relations of UIDL message id, attachment file
name
of
the hidden message, and POP Account ID! And I have got the values in
my
program. Thanks for your great OutlookSpy!

Select a message -- IMessage -- GetProps -- Property Tag ==
0x8013
The first 8 number of 0x8013 value is POP Account ID. It's HEX and
must
be
changed to DEC.

In the same window, the value whose Property Tag is equle to "0x8016
(|ID=0x8f01)" is the UIDL message id.

Misc -- IOlkAccountManager
PROP_ACCT_ID is the POP Account ID got from IMessage.

Misc -- IOlkAccountManager -- select an account and click
"FindAccount"
The pVar of dwProp whose value is equal to "PT_LONG, 0x0003" is the
attachment file ID of the hidden file. For example, my value is
"2192694955".
When changed to HEX, it will be "82b1deab". So the attachment file
names
of
hidden message in Inbox are "Blob82b1deab", "Restags82b1deab" and
"Deleted82b1deab".

What I have to do now is to add the UIDL message id to the
attachment
file
whose name is "Deleted82b1deab". Could you tell me how to add
something
in
an
attachment using CDO?

Thank you and have a good day! :-)


"Dmitry Streblechenko" wrote:

You cannot hardcode the property tag; it is a named property, you
must
call
IMessage::GetIDsFromNames first.
I don't know how those messages are mapped to the accounts, sorry.
Did
you
try to see if anything is available through the IOlkAccountManager
(you
can
access it through Misc | IOlkAccountManager in OutlookSpy)?

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rui Feng" wrote in message
...
I've written this and it works:

CComPtr IUnknown spUnknown;
CComPtr IMessage spIMessage;
spNewMail-get_MAPIOBJECT(&spUnknown);
spUnknown-QueryInterface(IID_IMessage, (void **)&spIMessage);

SPropTagArray Array;
LPSPropTagArray lpArray = &Array;
lpArray-cValues = 1;
lpArray-aulPropTag[0] = 0x80160102;

ULONG FAR lpcValues;
LPSPropValue lppPropArray;
HRESULT hr = spIMessage-GetProps(lpArray, NULL, &lpcValues,
&lppPropArray);

int nStrCount = lppPropArray-Value.bin.cb;
_bstr_t bstrPOPString((wchar_t *)lppPropArray-Value.bin.lpb);
char * cPOPString = bstrPOPString;
ATLTRACE("POPSTRING = %s\n", cPOPString);

I do not forget to free them like this:
MAPIFreeBuffer((void *)lpcValues);
MAPIFreeBuffer(lppPropArray);

The UIDL message id have been stored in bstrPOPString. The next
step
is
to
add it to the corresponding attachment of hidden message. I don't
know
how
to
find the exact attachment because I have 3 "Deletedxxxxxxxx"
files.

I cannot get its property tag like PR_XXXXXX style because it has
no
name
in
MAPITAGS.H file. Instead, I use 0x80160102 directly. Do you think
its
property tag is different in other computers installed Outlook
2003?

Thank you.


"Dmitry Streblechenko" wrote:

No, it does not delete the message id.
Yes, you can access the list of message ids. If you are using
CDO
1.21,
use
the Folder.HiddenMessages to find the corresponding message.
Look
at
the
hidden messages with OutlookSpy (click IMAPIFolder, go to the
"Associated
Contents" tab) or MFCMAPI.
I don't see however how that will help you - if you delete that
message
id,
POP3 provider will assume that it is a new message and download
it
again.
This is the opposite of what you are trying to achieve.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rui Feng" wrote in message
...
So do you think CDO "Message.Delete" method does not delete
(maybe
forget
to
delete) message ids in that hidden message? If this is true,
can
my
add-in
access that hidden message in the Inbox and delete ids?

Thank you.

"Dmitry Streblechenko" wrote:

Outlook stores the list of the message ids in a hidden
message
(PR_MESSAGE_CLASS = "IPM.MessageManager") in the Inbox.
However there is no way to tell the POP3 provider in Outlook
to
delete
a
particular message from a POP3 server.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rui Feng" Rui wrote in
message
...
Hi all.

My Outlook 2003 retrieves emails from a POP3 server. I set
to
"Leave
a
copy
of messages on the server" and "Remove from server when
deleted
from
'Deleted Items'". I wrote a COM Add-in using VC++ 6.0

When recieved a new mail from certain sender, I can catch
the
ItemAdd event and use CDO Message-Delete() to permanently
delete
that
new email. But the email has not been deleted from the POP3
server.

I guess there is a looking-up table in Outlook. When I
delete
an
Email
in
"Deleted Items Folder", Outlook find ID of that email and
set
a
value.
It
uses that value to notify the POP3 server next time to
delete
corresponding
email
with the same ID on the server.

I think maybe CDO doesn't tell Outlook that "an email was
deleted
and
please
tell
POP3 Server to delete the copy when connected next time".

Is that true and how to solve it? If you can do it using
other
programming
language
like VB please tell me anyway.

Thank you. :-)

--------
Beijing, China


















 




Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Stop pop3 e-mail from downloading over again & leave server copy tberger Outlook - Installation 3 August 17th 06 05:39 PM
Leave messages on server (pop3) losl(removethis) Outlook Express 1 August 9th 06 03:47 AM
keep a copy of messages on server Nina Outlook - Installation 0 May 31st 06 11:50 AM
Messages sent using CDO arriving as text Danila Outlook and VBA 0 May 15th 06 05:26 PM
Macro to selectively delete message from POP3 server alainr Outlook and VBA 3 January 20th 06 01:42 PM


All times are GMT +1. The time now is 05:24 PM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.Search Engine Friendly URLs by vBSEO 2.4.0
Copyright ©2004-2025 Outlook Banter.
The comments are property of their posters.