Email 是最常用的用戶識別手段。
開發者常常需要驗證郵箱的真實性。一般的方法是,注冊時向該郵箱發出一封驗證郵件,要求用戶點擊郵件里面的鏈接。
但是很多時候(比如要搞郵件營銷時),拿到的是成千上萬現成的 Email 地址,不可能通過回復確認真實性,這時該怎么辦呢?
答案就是使用 SMTP 協議。本文將介紹如何通過該協議驗證郵箱的真假。
另外,結尾處還有一則移動端 H5 開發的培訓消息,歡迎關注。
SMTP 是"簡單郵件傳輸協議"(Simple Mail Transfer Protocol)的縮寫,基于 TCP 協議,用來發送電子郵件。
只要運行了該協議的服務器端(daemon),當前服務器就變為郵件服務器,可以接收電子郵件。
驗證 Email 郵箱的基本思路如下。
注意,即使服務器確認郵箱是真的, 也不代表郵件一定會發送到該郵箱,更不代表用戶一定會讀到該郵件。
下面通過一個例子,演示如何驗證test@gmail.com
這個郵箱。
首先,需要查找gmail.com
的 MX 記錄。它指向真正處理郵件的那臺服務器。
$ nslookup >
輸入nslookup
命令后,會提示一個大于號,表示等待用戶進一步輸入。
> set q=mx > gmail.com
上面代碼中,set q=mx
設定查詢的是 MX 記錄,第二行輸入要查找的域名,結果返回了5條 MX 記錄。
Server: 192.168.1.1 Address: 192.168.1.1#53 Non-authoritative answer: gmail.com mail exchanger = 20 alt2.gmail-smtp-in.l.google.com. gmail.com mail exchanger = 30 alt3.gmail-smtp-in.l.google.com. gmail.com mail exchanger = 10 alt1.gmail-smtp-in.l.google.com. gmail.com mail exchanger = 5 gmail-smtp-in.l.google.com. gmail.com mail exchanger = 40 alt4.gmail-smtp-in.l.google.com.
gmail.com
是很大的郵件服務商,所以會有多條記錄,一般的域名只有一條。如果這一步查不到 MX 記錄,該郵箱肯定是假的。
除了自己執行nslookup
,也可以使用線上服務(1,2,3)。更多 DNS 的介紹,請參考《DNS 原理入門》。
知道了郵件服務器的地址,就可以與它建立 TCP 連接了。SMTP 協議的默認端口是25。使用 Telnet 或 Netcat 命令,都可以連接該端口。
$ telnet gmail-smtp-in.l.google.com 25 # 或者 $ nc gmail-smtp-in.l.google.com 25
服務器返回220
狀態碼,就表示連接成功。
220 mx.google.com ESMTP f14si7006176pln.607 - gsmtp
接下來,就可以使用 SMTP 協議的各種命令與郵件服務器交互了。
SMTP 協議規定,連接成功后,必須向郵件服務器提供連接的域名,也就是郵件將從哪臺服務器發來。
假定從mail@example.com
向test@gmail.com
發送郵件,這里要提供的域名就是example.com
。
HELO exampl.com
郵件服務器返回狀態碼250
,表示響應成功。
250 mx.google.com at your service
不過,HELO
命令現在比較少用,一般都使用EHLO
命令。
EHLO example.com
郵件服務器收到EHLO
命令以后,不僅會返回250
狀態碼,還會返回自己支持的各種擴展的列表。
250-mx.google.com at your service, [114.84.160.153] 250-SIZE 157286400 250-8BITMIME 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250 SMTPUTF8
然后,連接者要使用MAIL FROM
命令,向郵件服務器提供郵件的來源郵箱。
MAIL FROM:<mail@example.com>
上面代碼表示,連接者將從mail@example.com
向郵件服務器發送郵件。郵件服務器返回250
狀態碼,表示響應成功。
250 2.1.0 OK h10si3194349otb.59 - gsmtp
SMTP 是一個很簡單的協議,本身沒有規定如何驗證郵件的來源,也就是說,不驗證郵件是否真的從mail@example.com
發來,所以導致了后來垃圾郵件泛濫。為了控制垃圾郵件,許多郵件服務器會用自己的方法驗證郵件地址,下面就是其中的一些方法。
最后一步就是使用RCPT TO
命令,驗證郵件地址是否存在。
RCPT TO:<test@gmail.com>
郵件服務器返回了550
狀態碼,表示該 Email 地址不存在。
550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 https://support.google.com/mail/?p=NoSuchUser p34si3372771otp.228 - gsmtp
如果查詢的是一個真實的 Email 地址,郵件服務器就會返回250
狀態碼。
RCPT TO:<yifeng.ruan@gmail.com> 250 2.1.5 OK p34si3372771otp.228 - gsmtp
一般來說,狀態碼 250 和 251 都表示郵箱存在,狀態碼 5xx 表示不存在,其他狀態碼(主要是 4xx)則代表無法確認。
RCPT TO:<xxx@censored.pl> 451 Temporary local problem - please try later
驗證完成后,使用QUIT
命令關閉 TCP 連接。
QUIT 221 2.0.0 closing connection p34si3372771otp.228 - gsmtp
(正文完)
==============================
下面是推廣時間。移動端開發的市場廣,就業潛力大,現在有一門移動端 H5 開發的課程推薦給大家。
海棠學院是一家專業的前端教育機構,一直與我有合作、受到很多學員好評。他們這次推出《移動端開發 + 職業技能》大型公開課,介紹 H5 開發,為期三周。
該課程將帶領您一步一步學習移動端頁面的開發,手把手教你做出下面的頁面。
完整的課程大綱請參考這里。
除了技術課程,還會有一次《前端開發流程、求職、職場》的公開課,由海棠學院創始人張小河主講,幫助你了解前端工程師的就業市場和職業規劃。
這堂公開課是免費的,點擊這里了解詳情。
(完)
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
北京地鐵9號線全程?北京地鐵9號線是北京一條已建成運營的城市軌道交通線路,于2011年12月31日開通南段(郭公莊站至北京西站),2012年10月12日開通豐臺東街站,2012年12月30日開通北段(白堆子站至國家圖書館站)。2013年,北京地鐵9號線。[1][20][21]據2020年3月北京地鐵官網顯示,北京地鐵9號線為南北走向,北起國家圖書館,途經白石橋南、白堆子、北京西站、豐臺東街等地,南...
安徽八大名酒是哪八大?八大名酒是顧靖酒廠、口子窖、迎駕酒廠、宣酒、濉溪大曲、明光大曲、稻花香大曲、阜陽大曲等。,其中前四個最有名,在都很有名。安徽八大名酒是哪八大?1:安徽口子窖2.安徽顧靖酒廠3.安徽宣酒4.安徽迎駕酒廠5.安徽王文酒廠6:安徽醉三秋7.安徽皖酒8:安徽太和寺龍酒安徽八大名酒是哪八大?安徽名酒品牌有限公司。;黃金不能改變葡萄酒。 "金不換 "系列白酒有品、寶、精、綿、雅、香等30...
fpe怎么用?這是一個舊的修飾符。首先,您可以在設置中找到熱鍵設置。你可以把它換到一個更舒適的關鍵位置。我通常用F鍵。然后你在開始游戲之前打開FPE,進入游戲,找到你想要修改的數字,比如金錢、經驗,記錄下來,按熱鍵,界面就會跳出到FPE,你在搜索欄中輸入你的數字,搜索,你可以找到幾組東西,可以多點,你可以點擊進入游戲,對原來的號碼進行更改,比如玩怪和體驗,花點錢,然后記錄更改的號碼,然后按熱鍵跳出...