Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(SQL Server) IMAP Find Emails by DateSee more IMAP ExamplesExplains how to find emails by date using the IMAP protocol.
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls. -- CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int DECLARE @iTmp0 int -- Important: Do not use nvarchar(max). See the warning about using nvarchar(max). DECLARE @sTmp0 nvarchar(4000) -- This example requires the Chilkat API to have been previously unlocked. -- See Global Unlock Sample for sample code. DECLARE @imap int -- Use "Chilkat_9_5_0.Imap" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Imap', @imap OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END -- Connect to an IMAP server. EXEC sp_OASetProperty @imap, 'Ssl', 1 EXEC sp_OASetProperty @imap, 'Port', 993 DECLARE @success int EXEC sp_OAMethod @imap, 'Connect', @success OUT, 'imap.example.com' IF @success <> 1 BEGIN EXEC sp_OAGetProperty @imap, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @imap RETURN END -- Login EXEC sp_OAMethod @imap, 'Login', @success OUT, 'myLogin', 'myPassword' IF @success <> 1 BEGIN EXEC sp_OAGetProperty @imap, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @imap RETURN END -- Select an IMAP mailbox EXEC sp_OAMethod @imap, 'SelectMailbox', @success OUT, 'Inbox' IF @success <> 1 BEGIN EXEC sp_OAGetProperty @imap, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @imap RETURN END -- In the IMAP (Internet Message Access Protocol) protocol, criteria strings are used to search for emails matching specific criteria on the mail server. -- When searching for emails by date, you can use criteria strings to specify the date range you're interested in. -- -- IMAP provides several options for searching emails by date using criteria strings. Here are the commonly used ones: -- -- 1. BEFORE: Searches for emails sent before a specific date. -- Example: BEFORE 01-Apr-2022 -- -- 2. ON: Searches for emails sent on a specific date. -- Example: ON 01-Apr-2022 -- -- 3. SINCE: Searches for emails sent after a specific date. -- Example: SINCE 01-Apr-2022 -- -- 4. SENTBEFORE: Searches for emails whose date header (sent date) is before a specific date. -- Example: SENTBEFORE 01-Apr-2022 -- -- 5. SENTON: Searches for emails whose date header (sent date) is on a specific date. -- Example: SENTON 01-Apr-2022 -- -- 6. SENTSINCE: Searches for emails whose date header (sent date) is after a specific date. -- Example: SENTSINCE 01-Apr-2022 -- -- -- The date format used in IMAP criteria strings is typically a specific format like "DD-Mon-YYYY" (e.g., "01-Apr-2022"), but some servers may also accept other formats -- such as "YYYY-MM-DD". It's essential to check the documentation or specifications of the IMAP server you're working with to ensure compatibility with the -- date format you're using. -- -- By combining these date criteria strings with other search criteria (such as sender, recipient, subject, etc.), -- you can effectively filter and retrieve emails based on various conditions. -- -- Search for messages on a specific date. -- The date string is DD-Month-YYYY where Month is -- Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, or Dec. DECLARE @onDate nvarchar(4000) SELECT @onDate = 'SENTON 15-Apr-2024' -- Search for messages between two dates. SENTBEFORE -- finds emails sent before a date, and SENTSINCE finds -- email sent on or after a date. The "AND" operation -- is implied by joining criteria, separated by spaces. DECLARE @betweenDates nvarchar(4000) SELECT @betweenDates = 'SENTSINCE 12-Apr-2024 SENTBEFORE 15-Apr-2024' -- We can choose to fetch UIDs or sequence numbers. DECLARE @fetchUids int SELECT @fetchUids = 1 DECLARE @messageSet int EXEC sp_OAMethod @imap, 'Search', @messageSet OUT, @betweenDates, @fetchUids EXEC sp_OAGetProperty @imap, 'LastMethodSuccess', @iTmp0 OUT IF @iTmp0 = 0 BEGIN EXEC sp_OAGetProperty @imap, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @imap RETURN END EXEC sp_OAMethod @messageSet, 'ToCompactString', @sTmp0 OUT PRINT @sTmp0 -- Download each email in the message set. DECLARE @email int DECLARE @messageCount int EXEC sp_OAGetProperty @messageSet, 'Count', @messageCount OUT DECLARE @i int SELECT @i = 0 WHILE @i < @messageCount BEGIN EXEC sp_OAMethod @messageSet, 'GetId', @iTmp0 OUT, @i EXEC sp_OAMethod @imap, 'FetchSingle', @email OUT, @iTmp0, @fetchUids EXEC sp_OAGetProperty @imap, 'LastMethodSuccess', @iTmp0 OUT IF @iTmp0 = 0 BEGIN EXEC sp_OAGetProperty @imap, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @messageSet EXEC @hr = sp_OADestroy @imap RETURN END EXEC sp_OAGetProperty @email, 'Subject', @sTmp0 OUT PRINT @sTmp0 -- ... EXEC @hr = sp_OADestroy @email SELECT @i = @i + 1 END -- Disconnect from the IMAP server. EXEC sp_OAMethod @imap, 'Disconnect', @success OUT EXEC @hr = sp_OADestroy @messageSet EXEC @hr = sp_OADestroy @imap END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.