首頁 > 後端開發 > Golang > 使用 Go 的電子郵件驗證器

使用 Go 的電子郵件驗證器

Linda Hamilton
發布: 2025-01-12 18:08:44
原創
411 人瀏覽過

Email Verifier using Go

這篇部落格文章示範了使用 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>
登入後複製

電子郵件驗證元件說明:

  • MX(郵件交換器)記錄: 識別負責接受網域電子郵件的郵件伺服器。
  • SPF(寄件者政策框架)記錄: 指定授權郵件伺服器代表網域發送電子郵件。幫助檢測欺騙行為。
  • DMARC(基於網域的訊息驗證、報告和一致性): 基於 SPF 和 DKIM 構建,以增強電子郵件身份驗證和報告。 指定如何處理未通過 SPF 或 DKIM 檢查的電子郵件。

運行程式碼:

儲存程式碼後,從終端機運行它:go run main.go。 一次輸入一個網域名稱(例如 google.comexample.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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板