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
(PureBasic) Examine Yahoo Mail IMAP Session LogSee more Yahoo Mail ExamplesTo examine the IMAP session log, set the KeepSessionLog property = 1, and then examine the contents of the SessionLog property.
IncludeFile "CkMailboxes.pb" IncludeFile "CkJsonObject.pb" IncludeFile "CkImap.pb" Procedure ChilkatExample() ; This example assumes the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. ; See Get Yahoo Mail OAuth2 Access Token for Desktop App ; for sample code showing how to obtain a Yahoo Mail access token. ; In this example, our access token was previously saved to the following file which contains JSON like this: ; { ; "access_token": "kCVQdnOdul...LHucA--", ; "refresh_token": "AIenVXETSo0jklFBVkPS8vVm8E.Ej9ToRG.xDbDYmZ65WIs5t6CZhDrD", ; "expires_in": 3600, ; "token_type": "bearer", ; "xoauth_yahoo_guid": "HGDQCVF5JB4YDOWHITQJFBHCWA" ; } json.i = CkJsonObject::ckCreate() If json.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i = CkJsonObject::ckLoadFile(json,"qa_data/tokens/yahooMail.json") If success <> 1 Debug "Failed to load Yahoo Mail access token file." CkJsonObject::ckDispose(json) ProcedureReturn EndIf accessToken.s = CkJsonObject::ckStringOf(json,"access_token") ; Do OAuth2 authentication by using the access token as the password in the Login method below... imap.i = CkImap::ckCreate() If imap.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkImap::setCkSsl(imap, 1) CkImap::setCkPort(imap, 993) ; Tell Chilkat IMAP to keep a session log. CkImap::setCkKeepSessionLog(imap, 1) ; Connect to the Yahoo IMAP server. success = CkImap::ckConnect(imap,"imap.mail.yahoo.com") If success <> 1 Debug CkImap::ckLastErrorText(imap) CkJsonObject::ckDispose(json) CkImap::ckDispose(imap) ProcedureReturn EndIf ; Indicate that XOAUTH2 authentication is to be used: CkImap::setCkAuthMethod(imap, "XOAUTH2") ; Login ; Use the email address of the Yahoo Mail account that granted authorization. success = CkImap::ckLogin(imap,"user@yahoo.com",accessToken) If success <> 1 Debug CkImap::ckLastErrorText(imap) Else Debug "Successfully authenticated with Yahoo IMAP using XOAUTH2!" EndIf ; The ListMailboxes method returns a Mailboxes object ; that contains the collection of mailboxes. ; It accepts two arguments: a refName and a wildcardedMailbox. refName.s = "" ; refName is usually set to an empty string. ; A non-empty reference name argument is the name of a mailbox or a level of ; mailbox hierarchy, and indicates the context in which the mailbox ; name is interpreted. ; Select all mailboxes matching this pattern: wildcardedMailbox.s = "*" mboxes.i = CkImap::ckListMailboxes(imap,refName,wildcardedMailbox) If CkImap::ckLastMethodSuccess(imap) = 0 Debug CkImap::ckLastErrorText(imap) CkJsonObject::ckDispose(json) CkImap::ckDispose(imap) ProcedureReturn EndIf i.i = 0 While i < CkMailboxes::ckCount(mboxes) Debug CkMailboxes::ckGetName(mboxes,i) i = i + 1 Wend ; Sample output looks like this: ; Archive ; Bulk Mail ; Draft ; Inbox ; Inbox/emailsWithAttach ; Inbox/test ; Sent ; Trash ; Examine the session log Debug CkImap::ckSessionLog(imap) ; Sample session log ; ----INFO---- ; Connecting to IMAP server at imap.mail.yahoo.com:993 ; ----IMAP RESPONSE---- ; * OK [CAPABILITY IMAP4rev1 SASL-IR AUTH=PLAIN AUTH=XOAUTH2 AUTH=OAUTHBEARER ID MOVE NAMESPACE XYMHIGHESTMODSEQ UIDPLUS LITERAL+ CHILDREN X-MSG-EXT OBJECTID] IMAP4rev1 Hello ; ----IMAP REQUEST---- ; aaab AUTHENTICATE XOAUTH2 ; ----IMAP RESPONSE---- ; aaab OK AUTHENTICATE completed ; ----IMAP REQUEST---- ; aaac LIST "" "*" ; ----IMAP RESPONSE---- ; * LIST (\Archive \HasNoChildren) "/" "Archive" ; * LIST (\Junk \HasNoChildren) "/" "Bulk Mail" ; * LIST (\Drafts \HasNoChildren) "/" "Draft" ; * LIST (\HasChildren) "/" "Inbox" ; * LIST (\HasNoChildren) "/" "Inbox/emailsWithAttach" ; * LIST (\HasNoChildren) "/" "Inbox/test" ; * LIST (\Sent \HasNoChildren) "/" "Sent" ; * LIST (\Trash \HasNoChildren) "/" "Trash" ; aaac OK LIST completed ; Disconnect from the IMAP server. success = CkImap::ckDisconnect(imap) CkMailboxes::ckDispose(mboxes) CkJsonObject::ckDispose(json) CkImap::ckDispose(imap) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.