Sample code for 30+ languages & platforms
SQL Server

Fetch a Set of POP3 Messages by UIDL

See more POP3 Examples

Demonstrates the Chilkat MailMan.FetchUidlSet method, which retrieves the messages whose UIDLs are listed in a StringTable and appends them to an EmailBundle. The arguments are the UIDL StringTable, headersOnly, numBodyLines, and the EmailBundle. This example fetches two specific messages by UIDL.

Background: This is the efficient way to download a selected subset of a mailbox in one call — exactly the pattern for an incremental client: list the mailbox UIDLs, compare against the ones you've already stored, and fetch only the new UIDLs as a set. It avoids re-downloading messages you already have while still pulling everything new in a single operation.

Chilkat SQL Server Downloads

SQL Server
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    --  Demonstrates the MailMan.FetchUidlSet method, which retrieves the messages whose UIDLs are
    --  listed in a StringTable and appends them to an EmailBundle.  The arguments are the UIDL
    --  StringTable, headersOnly, numBodyLines, and the EmailBundle.  The messages remain on the
    --  server.

    DECLARE @mailman int
    EXEC @hr = sp_OACreate 'Chilkat.MailMan', @mailman OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    --  Configure the POP3 server connection.
    EXEC sp_OASetProperty @mailman, 'MailHost', 'pop.example.com'
    EXEC sp_OASetProperty @mailman, 'MailPort', 995
    EXEC sp_OASetProperty @mailman, 'PopSsl', 1
    EXEC sp_OASetProperty @mailman, 'PopUsername', 'user@example.com'
    EXEC sp_OASetProperty @mailman, 'PopPassword', 'myPassword'

    --  Build the set of UIDLs to fetch.
    DECLARE @uidls int
    EXEC @hr = sp_OACreate 'Chilkat.StringTable', @uidls OUT

    EXEC sp_OAMethod @uidls, 'Append', @success OUT, '0000000123abcdef'
    EXEC sp_OAMethod @uidls, 'Append', @success OUT, '0000000124abcdef'

    --  Fetch the listed messages (full bodies) into a bundle.
    --  headersOnly=0 (fetch the entire message).
    --  Note: numBodyLines only applies when headersOnly is 1 (it sets how many lines of the
    --  body to include along with the headers).  When headersOnly is 0, the entire message
    --  is fetched and numBodyLines is ignored.
    DECLARE @bundle int
    EXEC @hr = sp_OACreate 'Chilkat.EmailBundle', @bundle OUT

    EXEC sp_OAMethod @mailman, 'FetchUidlSet', @success OUT, @uidls, 0, 0, @bundle
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @mailman, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @mailman
        EXEC @hr = sp_OADestroy @uidls
        EXEC @hr = sp_OADestroy @bundle
        RETURN
      END

    DECLARE @n int
    EXEC sp_OAGetProperty @bundle, 'MessageCount', @n OUT


    PRINT 'Fetched ' + @n + ' messages.'

    DECLARE @email int
    EXEC @hr = sp_OACreate 'Chilkat.Email', @email OUT

    DECLARE @i int

    SELECT @i = 0
    WHILE @i <= @n - 1
      BEGIN
        EXEC sp_OAMethod @bundle, 'EmailAt', @success OUT, @i, @email
        EXEC sp_OAGetProperty @email, 'Subject', @sTmp0 OUT
        PRINT @sTmp0
        SELECT @i = @i + 1
      END

    --  Note: Explicitly connecting/authenticating is optional.  Chilkat MailMan automatically
    --  connects and authenticates -- using the property settings above -- whenever a server
    --  operation requires it.  Calling the explicit connect/authenticate methods can still be
    --  helpful to determine whether a failure occurs while connecting or while authenticating.

    EXEC @hr = sp_OADestroy @mailman
    EXEC @hr = sp_OADestroy @uidls
    EXEC @hr = sp_OADestroy @bundle
    EXEC @hr = sp_OADestroy @email


END
GO