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) Bounced Email HandlingDemonstrates how to examine emails and detect which are bounced (automated) replies. Classifies each email according to the type of bounce.
IncludeFile "CkEmail.pb" IncludeFile "CkEmailBundle.pb" IncludeFile "CkBounce.pb" IncludeFile "CkMailMan.pb" Procedure ChilkatExample() ; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. bounce.i = CkBounce::ckCreate() If bounce.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; The mailman object is used for receiving (POP3) ; and sending (SMTP) email. mailman.i = CkMailMan::ckCreate() If mailman.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; Set the POP3 server's hostname CkMailMan::setCkMailHost(mailman, "mail.chilkatsoft.com") ; Set the POP3 login/password. CkMailMan::setCkPopUsername(mailman, "myLogin") CkMailMan::setCkPopPassword(mailman, "myPassword") ; Copy the all email from the user's POP3 mailbox ; into a bundle object. The email remains on the server. ; (There are other methods for deleting email from a POP3 server.) bundle.i = CkMailMan::ckCopyMail(mailman) If CkMailMan::ckLastMethodSuccess(mailman) = 0 Debug CkMailMan::ckLastErrorText(mailman) CkBounce::ckDispose(bounce) CkMailMan::ckDispose(mailman) ProcedureReturn EndIf i.i = 0 email.i While i < CkEmailBundle::ckMessageCount(bundle) email = CkEmailBundle::ckGetEmail(bundle,i) success.i = CkBounce::ckExamineEmail(bounce,email) If success = 0 Debug CkBounce::ckLastErrorText(bounce) CkEmailBundle::ckDispose(bundle) CkBounce::ckDispose(bounce) CkMailMan::ckDispose(mailman) ProcedureReturn EndIf If CkBounce::ckBounceType(bounce) = 1 ; Hard bounce, log the email address Debug "Hard Bounce: " + CkBounce::ckBounceAddress(bounce) EndIf If CkBounce::ckBounceType(bounce) = 2 ; Soft bounce, log the email address Debug "Soft Bounce: " + CkBounce::ckBounceAddress(bounce) EndIf If CkBounce::ckBounceType(bounce) = 3 ; General bounce, no email address available. Debug "General Bounce: No email address" EndIf If CkBounce::ckBounceType(bounce) = 4 ; General bounce, log the email address Debug "General Bounce: " + CkBounce::ckBounceAddress(bounce) EndIf If CkBounce::ckBounceType(bounce) = 5 ; Mail blocked, log the email address ; A bounce occured because the sender was blocked. Debug "Mail Blocked: " + CkBounce::ckBounceAddress(bounce) EndIf If CkBounce::ckBounceType(bounce) = 6 ; Auto-reply, log the email address Debug "Auto-Reply: " + CkBounce::ckBounceAddress(bounce) EndIf If CkBounce::ckBounceType(bounce) = 7 ; Transient (recoverable) Failure, log the email address Debug "Transient Failure: " + CkBounce::ckBounceAddress(bounce) EndIf If CkBounce::ckBounceType(bounce) = 8 ; Subscribe request, log the email address Debug "Subscribe Request: " + CkBounce::ckBounceAddress(bounce) EndIf If CkBounce::ckBounceType(bounce) = 9 ; Unsubscribe Request, log the email address Debug "Unsubscribe Request: " + CkBounce::ckBounceAddress(bounce) EndIf If CkBounce::ckBounceType(bounce) = 10 ; Virus Notification, log the email address Debug "Virus Notification: " + CkBounce::ckBounceAddress(bounce) EndIf If CkBounce::ckBounceType(bounce) = 11 ; Suspected bounce. ; This should be rare. It indicates that the Bounce ; component found strong evidence that this is a bounced ; email, but couldn't quite recognize everything it ; needed to be 100% sure. Feel free to notify ; support@chilkatsoft.com regarding emails having this ; bounce type. Debug "Suspected Bounce!" EndIf If CkBounce::ckBounceType(bounce) = 12 ; Challenge/Response - Auto-reply message sent by SPAM software ; where only verified email addresses are accepted. Debug "Challenge: " + CkBounce::ckBounceAddress(bounce) EndIf If CkBounce::ckBounceType(bounce) = 13 ; Address Change Notification Message. Debug "Address Change: " + CkBounce::ckBounceAddress(bounce) EndIf If CkBounce::ckBounceType(bounce) = 14 ; Success DSN indicating that the message was successfully relayed. Debug "DSN Successful Relay: " EndIf CkEmail::ckDispose(email) i = i + 1 Wend CkEmailBundle::ckDispose(bundle) success = CkMailMan::ckPop3EndSession(mailman) CkBounce::ckDispose(bounce) CkMailMan::ckDispose(mailman) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.