SaaS應用在使用者註冊賬號時,需要傳送驗證碼驗證使用者賬號郵箱正確。但如果使用者輸入的郵箱不正確,需要
自己手動開發
也是校驗郵箱地址有效性的基本原理
- 校驗郵箱格式
- 校驗DNS
- 校驗SMTP伺服器響應
https://stackoverflow.com/questions/69412522/what-is-the-best-way-to-verify-an-email-address-if-it-actually-exist
使用Python第三方庫驗證
from validate_email import validate_email_or_fail
import logging, sys
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG);
def validate_email_address(email_addr: str):
is_valid = validate_email_or_fail(
email_address=email_addr,
check_format=True,
check_blacklist=True,
check_dns=True,
dns_timeout=10,
check_smtp=True,
smtp_timeout=10,
smtp_skip_tls=False,
smtp_tls_context=None,
smtp_debug=False,
)
return is_valid
def test_validate():
test_email_addr = 'your-name@example.com'
res = validate_email_address(test_email_addr)
print(res)
if __name__ == '__main__':
test_validate()
以上方法僅僅提供非常基礎的校驗,不同郵件服務商對於該檢查機制並不總適用,因此實際適配工作量比較大,且需要及時跟隨郵件供應商更改策略。
如果要在生產環境中使用,第三方服務是更具價效比的選擇。
使用第三方服務(免費試用+付費)
選型方法:
找出傳送失敗的郵件,根據不同失敗原因分類,在每種分類中取樣3-5個郵箱地址,測試第三方服務能否檢測成功。
https://app.abstractapi.com/ -- 價效比還不錯,未測出明顯短板
https://www.zerobounce.net/
https://emaillistvalidation.com/
https://www.usebouncer.com/
https://app.emailable.com/ -- 無法感知目標郵箱空間不足
https://hunter.io/ -- 目標郵箱空間不足時報錯,但不知道具體原因