SQL Server
SQL Server
Get an IMAP Flag from a Downloaded Email
See more IMAP Examples
Demonstrates the Chilkat Imap.GetMailFlag method, which returns the state of a named flag for an Email object that was downloaded from the server. The first argument is the Email and the second is the flag name. The return value is 1 if the flag is set, 0 if not, and -1 if the flag is not present. This example iterates a bundle and reports which messages are read vs unread.
Background: When Chilkat downloads a message it records the flags the server reported at fetch time, so you can inspect them locally with
GetMailFlag without another round trip. This is the client-side view: it reflects the state as of the download, not necessarily the live state on the server, which other clients could have changed. Use RefetchMailFlags to update an Email object's flags to the current server values.Chilkat SQL Server Downloads
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
DECLARE @hr int
DECLARE @iTmp0 int
DECLARE @sTmp0 nvarchar(4000)
DECLARE @success int
SELECT @success = 0
-- Demonstrates the Imap.GetMailFlag method, which returns the state of a named flag for an
-- Email object that was downloaded from the server. The 1st argument is the Email and the
-- 2nd is the flag name. The return value is 1 if the flag is set, 0 if not, and -1 if the
-- flag is not present.
DECLARE @imap int
EXEC @hr = sp_OACreate 'Chilkat.Imap', @imap OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
EXEC sp_OASetProperty @imap, 'Ssl', 1
EXEC sp_OASetProperty @imap, 'Port', 993
EXEC sp_OAMethod @imap, 'Connect', @success OUT, 'imap.example.com'
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @imap, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @imap
RETURN
END
EXEC sp_OAMethod @imap, 'Login', @success OUT, 'user@example.com', 'myPassword'
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @imap, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @imap
RETURN
END
EXEC sp_OAMethod @imap, 'SelectMailbox', @success OUT, 'Inbox'
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @imap, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @imap
RETURN
END
DECLARE @msgSet int
EXEC @hr = sp_OACreate 'Chilkat.MessageSet', @msgSet OUT
EXEC sp_OAMethod @imap, 'QueryMbx', @success OUT, 'ALL', 1, @msgSet
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @imap, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @imap
EXEC @hr = sp_OADestroy @msgSet
RETURN
END
DECLARE @bundle int
EXEC @hr = sp_OACreate 'Chilkat.EmailBundle', @bundle OUT
EXEC sp_OAMethod @imap, 'FetchMsgSet', @success OUT, 1, @msgSet, @bundle
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @imap, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @imap
EXEC @hr = sp_OADestroy @msgSet
EXEC @hr = sp_OADestroy @bundle
RETURN
END
DECLARE @email int
EXEC @hr = sp_OACreate 'Chilkat.Email', @email OUT
DECLARE @i int
EXEC sp_OAGetProperty @bundle, 'MessageCount', @iTmp0 OUT
SELECT @i = 0
WHILE @i <= @iTmp0 - 1
BEGIN
EXEC sp_OAMethod @bundle, 'EmailAt', @success OUT, @i, @email
-- Check whether each message has been read (the "Seen" flag).
DECLARE @seen int
EXEC sp_OAMethod @imap, 'GetMailFlag', @seen OUT, @email, 'Seen'
IF @seen = 1
BEGIN
EXEC sp_OAGetProperty @email, 'Subject', @sTmp0 OUT
PRINT @sTmp0 + ' -- already read'
END
ERROR: "}" expected
SELECT @i = @i + 1
END
EXEC @hr = sp_OADestroy @imap
EXEC @hr = sp_OADestroy @msgSet
EXEC @hr = sp_OADestroy @bundle
EXEC @hr = sp_OADestroy @email
END
GO