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