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
(AutoIt) Search IMAP Mailbox for Email Matching CriteriaSearching an IMAP mailbox for messages that match search criteria.
; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. $oImap = ObjCreate("Chilkat.Imap") ; Connect to an IMAP server. ; Use TLS $oImap.Ssl = True $oImap.Port = 993 Local $bSuccess = $oImap.Connect("imap.someMailServer.com") If ($bSuccess <> True) Then ConsoleWrite($oImap.LastErrorText & @CRLF) Exit EndIf ; Login $bSuccess = $oImap.Login("myLogin","myPassword") If ($bSuccess <> True) Then ConsoleWrite($oImap.LastErrorText & @CRLF) Exit EndIf ; Select an IMAP mailbox $bSuccess = $oImap.SelectMailbox("Inbox") If ($bSuccess <> True) Then ConsoleWrite($oImap.LastErrorText & @CRLF) Exit EndIf Local $oMessageSet ; We can choose to fetch UIDs or sequence numbers. Local $bFetchUids = True ; Here are examples of different search criteria: ; Return all messages. Local $sAllMsgs = "ALL" ; Search for already-answered emails. Local $sAnswered = "ANSWERED" ; 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. Local $sOnDate = "SENTON 05-Mar-2007" ; 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. Local $sBetweenDates = "SENTSINCE 01-Mar-2007 SENTBEFORE 05-Mar-2007" ; Another example of AND: find all unanswered emails ; sent after 04-Mar-2007 with "Problem" in the subject: Local $sComplexSearch1 = "UNANSWERED SENTSINCE 04-Mar-2007 Subject ""Problem""" ; Find messages with a specific string in the body: Local $sBodySearch = "BODY ""problem solved""" ; Using OR. The syntax is OR <criteria1> <criteria2>. ; The "OR" comes first, followed by each criteria. ; For example, to match all emails with "Help" or "Question" in the subject. ; You'll notice that literal strings may be quoted or unquoted. ; If a literal contains SPACE characters, quote it: Local $sOrSearch = "OR SUBJECT Help SUBJECT Question" ; ---------------------------------------------- ; Strings are case-insensitive when searching.... ; ---------------------------------------------- ; Find all emails sent from yahoo.com addresses: Local $sFromSearch = "FROM yahoo.com" ; Find all emails sent from anyone with "John" in their name: Local $sJohnSearch = "FROM John" ; Find emails with the RECENT flag set: Local $sRecentSearch = "RECENT" ; Find emails that don't have the recent flag set: Local $sNotRecentSearch = "NOT RECENT" ; This is synonymous with "OLD": Local $sOldSearch = "OLD" ; Find all emails marked for deletion: Local $sMarkedForDeleteSearch = "DELETED" ; Find all emails having a specified header field with a value ; containing a substring: Local $sHeaderSearch = "HEADER DomainKey-Signature paypal.com" ; Find any emails having a specific header field. If the ; 2nd argument to the "HEADER" criteria is an empty string, ; any email having the header field is returned regardless ; of the header field's content. ; Find any emails with a DomainKey-Signature field: Local $sHeaderExistsSearch = "HEADER DomainKey-Signature """"" ; Find NEW emails: these are emails that have the RECENT flag ; set, but not the SEEN flag: Local $sNewSearch = "NEW" ; Find emails larger than a certain number of bytes: Local $sizeLargerSearch = "LARGER 500000" ; Find emails marked as seen or not already seen: Local $seenSearch = "SEEN" Local $sNotSeenSearch = "NOT SEEN" ; Find emails having a given substring in the TO header field: Local $sToSearch = "TO support@chilkatsoft.com" ; A more long-winded way to do the same thing: Local $sToSearch2 = "HEADER TO support@chilkatsoft.com" ; Find emails smaller than a size in bytes: Local $smallerSearch = "SMALLER 30000" ; Find emails that have a substring anywhere in the header ; or body: Local $sFullSubstringSearch = "TEXT ""Zip Component""" ; Pass any of the above strings here to test a search: $oMessageSet = $oImap.Search($sOrSearch,$bFetchUids) If ($oImap.LastMethodSuccess = False) Then ConsoleWrite($oImap.LastErrorText & @CRLF) Exit EndIf ; Fetch the email headers into a bundle object: Local $oBundle $oBundle = $oImap.FetchHeaders($oMessageSet) If ($oImap.LastMethodSuccess = False) Then ConsoleWrite($oImap.LastErrorText & @CRLF) Exit EndIf ; Display the Subject and From of each email. Local $i = 0 While $i < $oBundle.MessageCount Local $oEmail $oEmail = $oBundle.GetEmail($i) ConsoleWrite($oEmail.GetHeaderField("Date") & @CRLF) ConsoleWrite($oEmail.Subject & @CRLF) ConsoleWrite($oEmail.From & @CRLF) ConsoleWrite("--" & @CRLF) $i = $i + 1 Wend ; Disconnect from the IMAP server. $bSuccess = $oImap.Disconnect() |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.