電子郵件地址驗證
即時檢查電子郵件地址是否符合實用的 RFC 5322 格式規範,並驗證該域名是否真的能夠接收郵件(MX 記錄查詢)。適用於表單校驗和清理郵件列表的免費工具。
電子郵件格式判定示例
| 示例地址 | 判定 | 原因 |
|---|---|---|
| [email protected] | 有效 | 基本格式(本地部分 @ 域名部分) |
| [email protected] | 有效 | 包含句點與加號的帶標籤地址 |
| [email protected] | 無效 | 本地部分中出現連續的句點 |
| @example.com | 無效 | “@”前的本地部分為空 |
| user@example | 無效 | 域名缺少頂級域(如 .com) |
| user example.com | 無效 | 不包含“@”符號 |
查驗電子郵件地址的格式與網域
本工具即刻判定所輸入的地址在格式上是否說得通,並能查明其網域是否當真接得住郵件——亦即有無 MX 記錄。設計表單驗證時,或整理已然年久的郵件名單時,它都派得上用場。
頭一件要明白的是:格式無可挑剔與地址當真存在,全然是兩回事。 一個地址縱然寫法完美,其背後的帳號若已註銷,照樣退信。反過來,RFC 5322 寬容得令人吃驚:"quoted string"@example.com 這樣的寫法在文法上竟是合法的。 故而想用正規表示式去做完全的驗證,便等於保證您總有一天會把一個本來有效的地址拒之門外。 實務中行得通的做法,是只鬆鬆地查一查格式,再發一封確認信請對方打開。 查 MX 記錄能確認該網域是否備下了收信之處,至於某一個具體地址是否存在,它一字未言。
使用方法
- 輸入地址 格式的判定當場作出。
- 閱讀格式的判定 它依 RFC 5322 的一個務實近似來判定。
- 查一查 MX 記錄 由此可知該網域是否公開了收信之處。
- 最終以發信來定奪 除了發一封確認信,別無他法可證一個地址確實存在。
用好本工具的小技巧
- 即使像“[email protected]”這樣格式正確的地址,也不能保證一定能收到郵件——下方的 MX 記錄檢查可以大致判斷這一點。
- 整理郵件列表時,先用格式檢查排除明顯的輸入錯誤,再用 MX 記錄檢查確認域名本身是否有效,效率會更高。
- Gmail、Outlook 等主流域名通常都配有 MX 記錄,但企業自有域名剛建立或配置有誤時可能缺少 MX 記錄。
- 複製貼上地址時末尾殘留的多餘空格會導致格式檢查判定為無效,請留意輸入框前後的空白字元。
- 如果想在自己的登錄檔單中加入即時校驗,下方“閒話”部分介紹的實用正規表示式可以直接複用。
這些情境會用到
設計表單的驗證
可一面拿真實例子去試,一面定下該拒到多嚴。
整理郵件名單
網域已然不存的地址,憑有無 MX 記錄便分得出來。
揪出打字之誤
gmail.con 之類的網域差錯,一查 MX 便顯露無遺。
查究投遞失敗的緣由
對一個收不到信的地址,可先判明是格式有誤還是網域有誤。
電子郵件地址的術語
- 本地部
@之前的那一段。依 RFC 5322,以引號括起便可容納原本不許的字元。- 網域部
@之後的那一段。寫在此處的網域,其 MX 記錄決定了信件的去處。- MX 記錄
- 指明由哪台伺服器接收某網域郵件的 DNS 記錄。 少了它,信便到不了。
- RFC 5322
- 規定郵件格式的標準。其條文遠比多數人所想的寬容。
- 國際化地址
- 含有非拉丁字元的地址。有些系統至今仍不接納,實務中須當心。
- 確認信
- 往所填地址發一封信、請收件人打開的步驟。這是最可靠的驗證之法。
常見問題
閒話 ― 為什麼郵件驗證要分兩個階段
把郵件地址驗證拆分為“格式”和“是否存在”兩個不同層面來理解會更清晰。格式檢查只是對字串結構(本地部分、@、域名部分)的靜態判斷,完全不涉及網路通訊。而確認域名是否存在則需要向 DNS 發起查詢,瀏覽器的 JavaScript 無法直接完成這一步,必須由伺服器端處理。本工具把兩者拆分成獨立步驟,正是因為它們在技術上屬於完全不同性質的檢查。
RFC 5322 定義了郵件地址的正式語法,其複雜程度出乎意料。例如,只要把本地部分用雙引號括起來,規範上甚至允許出現空格或連續句點,而這些寫法在實際郵件伺服器中幾乎從未被使用過。因此大多數從業者並不會實現完全合規的解析器,而是採用 WHATWG(HTML Living Standard)定義的簡化正規表示式,本工具也遵循了這種實用主義思路。
MX 記錄是登記在 DNS 中的一條記錄,用於說明“應由哪臺伺服器接收發往該域名的郵件”,優先順序數值越低越先被使用。企業在遷移郵件系統時,常常會讓多條 MX 記錄暫時共存,以便分階段完成切換。如果一條 MX 記錄都找不到,那麼發往該域名的郵件很可能會被接收方拒收。