這篇部落格文章示範了使用 Go 建立一個簡單的電子郵件驗證工具。 這是一個小型項目,旨在說明電子郵件驗證的核心概念及其底層機制。 我們不會深入研究每個細節,但我們會涵蓋足夠的內容以提供紮實的理解。
該程序首先驗證從電子郵件地址提取的網域(例如 google.com
)。
設定你的 Go 項目:
開啟終端機並執行以下命令:
<code class="language-bash">1. go mod init github.com/username/email-verifier // Replace 'username' with your GitHub username. 2. touch main.go</code>
實作Go程式碼(main.go):
main.go
檔案將包含核心邏輯。此初始片段從命令列讀取域輸入:
<code class="language-go">package main import ( "bufio" "log" "net" "os" "strings" ) func main() { scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { verifyDomain(scanner.Text()) } if err := scanner.Err(); err != nil { log.Fatal("Error: could not read from input %v\n", err) } }</code>
verifyDomain
函數處理實際的驗證過程。它檢查 MX、SPF 和 DMARC 記錄:
<code class="language-go">func verifyDomain(domain string) { var hasMX, hasSPF, hasDMARC bool var spfRecord, dmarcRecord string // MX Record Check mxRecords, err := net.LookupMX(domain) if err != nil { log.Printf("Error: could not find MX record for %s due to %v\n", domain, err) } if len(mxRecords) > 0 { hasMX = true } // SPF Record Check txtRecords, err := net.LookupTXT("spf." + domain) if err != nil { log.Printf("Error: could not find SPF record for %s due to %v\n", domain, err) } for _, record := range txtRecords { if strings.HasPrefix(record, "v=spf1") { hasSPF = true spfRecord = record break } } // DMARC Record Check dmarcRecords, err := net.LookupTXT("_dmarc." + domain) if err != nil { log.Printf("Error: could not find DMARC record for %s due to %v\n", domain, err) } for _, record := range dmarcRecords { if strings.HasPrefix(record, "v=DMARC1") { hasDMARC = true dmarcRecord = record break } } log.Printf("Domain: %v,\n MX: %v,\n SPF: %v,\n DMARC: %v,\n SPF Rec: %v,\n DMARC Rec %v,\n\n", domain, hasMX, hasSPF, hasDMARC, spfRecord, dmarcRecord) }</code>
電子郵件驗證元件說明:
運行程式碼:
儲存程式碼後,從終端機運行它:go run main.go
。 一次輸入一個網域名稱(例如 google.com
、example.com
)。輸出將顯示是否找到 MX、SPF 和 DMARC 記錄。
範例輸出:
<code>Domain: google.com, MX: true, SPF: false, DMARC: true, SPF Rec: , DMARC Rec v=DMARC1; p=reject; rua=mailto:mailauth-reports@google.com, </code>
此輸出顯示域 google.com
具有 MX 記錄和 DMARC 記錄,但在此範例中 SPF 記錄查找失敗。 結果將根據網域的 DNS 配置而有所不同。
請記得將 "github.com/username/email-verifier"
替換為您實際的 GitHub 儲存庫資訊。 在 LinkedIn、GitHub 和 Twitter/X 上與我聯繫以進行進一步討論!
以上是使用 Go 的電子郵件驗證器的詳細內容。更多資訊請關注PHP中文網其他相關文章!