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) Verify DomainKey-Signature Headers in Downloaded EmailDownloads email from an IMAP server and verifies the DomainKey-Signature header(s) in each email, if present. Note: DKIM-Signatures are much more common than DomainKey-Signatures. See the other Chilkat example for verifying DKIM-Signatures (link in the code below).
; 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, login, select mailbox.. ; Use TLS $oImap.Ssl = True $oImap.Port = 993 Local $bSuccess = $oImap.Connect("imap.someMailServer.com") If ($bSuccess = True) Then $bSuccess = $oImap.Login("myLogin","myPassword") If ($bSuccess = True) Then $bSuccess = $oImap.SelectMailbox("Inbox") EndIf EndIf If ($bSuccess <> True) Then ConsoleWrite($oImap.LastErrorText & @CRLF) Exit EndIf ; Note: DKIM-Signatures are much more common than DomainKey-Signature ; See DKIM-Signature Verify Sample. $oDkim = ObjCreate("Chilkat.Dkim") ; Download a max of 10 emails and verify any DomainKey-Signature headers ; that are present. ; Download emails by sequence numbers (not UIDs). Local $bUid = False Local $iSeqNum Local $iJ Local $iN = $oImap.NumMessages If ($iN > 50) Then $iN = 50 EndIf $oJson = ObjCreate("Chilkat.JsonObject") $oJson.EmitCompact = False ; To verify DomainKey-Signature headers, we need the exact unmodified MIME bytes of each email. $oMimeData = ObjCreate("Chilkat.BinData") $iSeqNum = 1 While $iSeqNum <= $iN ; The FetchSingleBd method was introduced in v9.5.0.76 $bSuccess = $oImap.FetchSingleBd($iSeqNum,$bUid,$oMimeData) If ($bSuccess <> True) Then ConsoleWrite($oImap.LastErrorText & @CRLF) Exit EndIf ; Note: DKIM-Signatures are much more common than DomainKey-Signature ; See DKIM-Signature Verify Sample. ; Get the number of DomainKey-Signature headers. Local $iNumSigs = $oDkim.NumDomainKeySigs($oMimeData) ; Verify each.. $iJ = 0 While $iJ < $iNumSigs ConsoleWrite("------ DomainKey Signature " & $iJ & @CRLF) $bSuccess = $oDkim.DomainKeyVerify($iJ,$oMimeData) If ($bSuccess <> True) Then ConsoleWrite("Not valid." & @CRLF) ConsoleWrite($oDkim.LastErrorText & @CRLF) Else ConsoleWrite("valid." & @CRLF) EndIf ; Show the additional information about the signature verification $oJson.Load($oDkim.VerifyInfo) ConsoleWrite($oJson.Emit() & @CRLF) ; The JSON contains information such as this: ; { ; "domain": "amazonses.com", ; "selector": "7v7vs6w47njt4pimodk5mmttbegzsi6n", ; "publicKey": "MIGfMA0GCSqG...v2GvWPqGHz6uqeQIDAQAB", ; "canonicalization": "relaxed/simple", ; "algorithm": "rsa-sha256", ; "signedHeaders": "Subject:From:To:Date:Mime-Version:Content-Type:References:Message-Id:Feedback-ID", ; "verified": "yes" ; } $iJ = $iJ + 1 Wend $iSeqNum = $iSeqNum + 1 Wend $bSuccess = $oImap.Disconnect() |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.