SQL Server
SQL Server
Fetch All Messages from a POP3 Mailbox
See more POP3 Examples
Demonstrates the Chilkat MailMan.FetchAll method, which retrieves messages from the POP3 mailbox and appends them to an EmailBundle. The arguments are keepOnServer, headersOnly, numBodyLines, and the EmailBundle that receives the emails. This example downloads every message and iterates the bundle, printing each subject.
Background: An
EmailBundle is Chilkat's container for a set of downloaded messages — you read its MessageCount and pull out each Email with EmailAt. The three flags control how much is fetched: keepOnServer leaves copies in the mailbox rather than removing them, headersOnly downloads just the headers for a fast preview, and numBodyLines can fetch a partial body (0 means the whole body). Traditional POP3 clients download and delete; setting keepOnServer to true supports "leave mail on server" behavior.Chilkat SQL Server Downloads
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
DECLARE @hr int
DECLARE @sTmp0 nvarchar(4000)
DECLARE @success int
SELECT @success = 0
-- Demonstrates the MailMan.FetchAll method, which retrieves messages from the POP3 mailbox
-- and appends them to an EmailBundle. The arguments are keepOnServer, headersOnly,
-- numBodyLines, and the EmailBundle that receives the emails.
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'
-- Fetch all messages, leaving them on the server, with full bodies.
-- keepOnServer=1, 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, 'FetchAll', @success OUT, 1, 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 @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 @bundle
EXEC @hr = sp_OADestroy @email
END
GO