Whats a UIDL?

Unique IDs (or UIDLs - after the UIDL POP3 Command that displays them) are session-independent, server-unique ID's or tags that are used to identify emails on a POP3 server. By logging these UIDLs it is possible to know what mail has been collected and what is yet to collect.

The only valid characters for a UIDL are ASCII characters between 0x21 and 0x7E

Versions 0.2.2 and Prior

These versions stored the UIDLs as a part of the p3ss.config file. The layout of this old file is not documented

Versions 0.2.3 and Above

The uidl.xml format is a standard xml format.

XML Elements

  • The root node is "<ArrayOfUIDLContainerItem>"
    • There is one "<UIDLContainerItem>" per POP3 account
      • "<POP3Server>" which has the POP3Server.ToString() of the relevant POP3 Account (see below for formatting)
      • "<UIDLs>" which has the list of UIDL's
        • Each UIDL is in a "<string>" tag

General Format

The generalised formatting (using square brackets for variables\parameters) is:
<?xml version="1.0"?>
<ArrayOfUIDLContainerItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <UIDLContainerItem>
    <POP3Server>[USERNAME]@@[SERVER]:[PORT][ENCRYPTION]</POP3Server>
    <UIDLs>
      <string>[UIDL]</string>
    </UIDLs>
  </UIDLContainerItem>
</ArrayOfUIDLContainerItem>

Parameters

  • USERNAME
    • Username to log into the POP3 Server
  • SERVER
    • The address of the server
  • PORT
    • The port on the server (typically 110, or 995 for implicit encryption)
  • ENCRYPTION
    • A symbol representing the encryption:
      • No Encryption: '' (blank)
      • Implicit encryption: '-' (Minus sign)
      • Explicit encryption: '+' (Plus sign)
  • UIDL
    • The UIDL, this can be found in the old p3ss.config file (NOTE: Versions 0.2.2 and prior have a bug where the new line at the end of each UIDL is not removed (See discussion))

Example file

This example file has four POP3 accounts:
  • bob@example.com
    • Username: bob+example.com
    • Server: mail.example.com
    • Port: 110
    • Encryption: None
    • UIDLs:
      • FGH123412
      • ASI849304
      • QUI104893
  • this@that.net
    • Username: this
    • Server: mail.that.net
    • Port: 110
    • Encryption: None
    • UIDLs: (None)
  • bob@gmail.com
    • Username: bob@gmail.com
    • Server: pop.gmail.com
    • Port: 995
    • Encryption: Implicit
    • UIDLs:
      • GmailId1255de5ef7447ba1
      • GmailId1255de5ef5412d45
      • GmailId1255de5ef7447af3
      • GmailId1255de5ef324ada4
  • j.smith@contoso.com.au
    • Username: j.smith
    • Server: exchange.contoso.com.au
    • Port: 110
    • Encryption: Explicit
    • UIDLs:
      • 899-2h48-298&&*)(3
      • asdf$@&&*FH
<?xml version="1.0"?>
<ArrayOfUIDLContainerItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <UIDLContainerItem>
    <POP3Server>bob+example.com@@mail.example.com:110</POP3Server>
    <UIDLs>
      <string>FGH123412</string>
      <string>ASI849304</string>
      <string>QUI104893</string>
    </UIDLs>
  </UIDLContainerItem>
  <UIDLContainerItem>
    <POP3Server>this@@mail.that.net:110</POP3Server>
    <UIDLs />
  </UIDLContainerItem>
  <UIDLContainerItem>
    <POP3Server>bob@gmail.com@@pop.gmail.com:995-</POP3Server>
    <UIDLs>
      <string>GmailId1255de5ef7447ba1</string>
      <string>GmailId1255de5ef5412d45</string>
      <string>GmailId1255de5ef7447af3</string>
      <string>GmailId1255de5ef324ada4</string>
    </UIDLs>
  </UIDLContainerItem>
  <UIDLContainerItem>
    <POP3Server>j.smith@@exchange.contoso.com.au:110+</POP3Server>
    <UIDLs>
      <string>899-2h48-298*&*)(3</string>
      <string>asdf$@*&*FH</string>
    </UIDLs>
  </UIDLContainerItem>
</ArrayOfUIDLContainerItem>

Last edited Dec 8, 2009 at 1:19 PM by TehPenguin, version 1

Comments

No comments yet.