Michael Lorenz wrote:
> Hi All,
>
> for a special program (delete my messages on the server) I want to get all
> headers in a list with their message ids. Then I want to list it on a
> CheckBoxList and after that I want to delete them. The receiving of a
> complete mail is no problem, the deltion also, but how can I get only the
> message headers and Ids? I don't want to receive the whole message.
Here's what you do, in POP3 commands:
1. Issue a "UIDL" command with no arguments. This will return a list of
the message number and their Unique IDentifier (the msg ID from the POP3
server).
Alternatively, if your server does not support the UIDL command (I
believe its not required by the RFC, you will then have to issue a LIST
command, then a TOP command (see below) to get the headers, parse the
headers, and extract the Message-ID header from it.
Notice that there is a difference between the UID of the POP3 server and
the Message-ID header, which is inserted by the SMTP server. The UID is
easier to find (by using the UIDL command), so use it if its available.
2. You store this list locally so that you can reference the messages on
the server later.
3. Issue a "TOP" command. The TOP command has 2 arguments, the message
number (from the LIST or UIDL command) and the amount of message body
lines to return. If you give zero as the body lines, it will return
only the headers.
4. When you are ready to delete a message, send the "DELE" command with
the message number.
Keep in mind that the message numbers might change when the mailbox is
updated. If you are going to keep the session open while the user
selects which messages to delete, you will have no problems. But if you
plan on disconnecting, be aware that the message list might have been
updated by a separate session, so as an added integrity measure you
should verify that the message number still belongs to that particular
message by issuing a "UIDL" command with the message number as an
argument, and comparing it with the UID you stored locally. If they
match, you can safely delete the message. If they don't, you should
issue a new UIDL command to get the list again and update the message
numbers of your local UID list. This is important, and a major error on
some amateur mail software built by independent developers (I know that
The Bat! had this problem back in version 1.x).
As an example, your POP3 session will look like this:
NOTE:
'<' = received from server
'>' sent to server
< +OK POP3 Server Ready
> UIDL
< +OK unique-id listing follows
< 1 B0208052198.MSG
< 2 B0208062359.MSG
< 3 B0208062986.MSG
< 4 B0208063013.MSG
< 5 B0208067844.MSG
< .
> TOP 1 0
< +OK
{Headers of #1 go here... SNIP!}
< .
> TOP 2 0
< +OK
{Headers of #2 go here... SNIP!}
< .
> TOP 3 0
< +OK
{Headers of #3 go here... SNIP!}
< .
> TOP 4 0
< +OK
{Headers of #4 go here... SNIP!}
< .
> TOP 5 0
< +OK
{Headers of #5 go here... SNIP!}
< .
> UIDL 1
< +OK 1 B0208052198.MSG
> DELE 1
< +OK message 1 deleted
> QUIT
< +OK POP3 server signing off (4 messages left)
dZ.
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://www.elists.org/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be