Sample code for 30+ languages & platforms
SQL Server

POP3 Session Log

Demonstrates how the Chilkat email component keeps a log of the current POP3 session in the mailman.Pop3SessionLog property.

Chilkat SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    -- This example assumes the Chilkat API to have been previously unlocked.
    -- See Global Unlock Sample for sample code.

    -- The mailman object is used for receiving (POP3) 
    -- and sending (SMTP) email.
    DECLARE @mailman int
    EXEC @hr = sp_OACreate 'Chilkat.MailMan', @mailman OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    -- Set the POP3 server's hostname
    EXEC sp_OASetProperty @mailman, 'MailHost', 'pop3.example.com'

    -- Set the POP3 login/password.
    EXEC sp_OASetProperty @mailman, 'PopUsername', 'pop3_login'
    EXEC sp_OASetProperty @mailman, 'PopPassword', 'pop3_password'
    EXEC sp_OASetProperty @mailman, 'MailPort', 995
    EXEC sp_OASetProperty @mailman, 'PopSsl', 1

    -- You can start and end POP3 sessions using Pop3BeginSession and Pop3EndSession. 
    -- However, these calls are optional because a connection will be established automatically 
    -- when a method requiring a POP3 server connection is used.

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

    -- Get the list of UIDLs for all emails in the mailbox.
    DECLARE @stUidls int
    EXEC @hr = sp_OACreate 'Chilkat.StringTable', @stUidls OUT

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

    -- Examine the POP3 session log:
    EXEC sp_OAGetProperty @mailman, 'Pop3SessionLog', @sTmp0 OUT
    PRINT @sTmp0

    -- A sample session log:

    -- **** Connected to pop.example.com:995
    -- < +OK Dovecot ready.
    -- > USER ****
    -- < +OK
    -- > PASS ****
    -- < +OK Logged in.
    -- > UIDL
    -- < +OK
    -- 1 UID8226-1490455265
    -- 2 UID8248-1490455265
    -- 3 UID8624-1490455265
    -- 4 UID8655-1490455265
    -- 5 UID8706-1490455265
    -- 6 UID9003-1490455265
    -- 7 UID9204-1490455265
    -- 8 UID9309-1490455265
    -- 9 UID9311-1490455265
    -- 10 UID9356-1490455265
    -- 11 UID9802-1490455265
    -- 12 UID10373-1490455265
    -- 13 UID10543-1490455265
    -- 14 UID10548-1490455265
    -- 15 UID10558-1490455265
    -- 16 UID10567-1490455265
    -- 17 UID10573-1490455265
    -- .

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

    EXEC @hr = sp_OADestroy @mailman
    EXEC @hr = sp_OADestroy @stUidls


END
GO