2016-10-04 343 views
0

我想檢查一個電子郵件ID是否存在或不使用php.I已檢查了許多示例,文章如 https://code.google.com/archive/p/php-smtp-email-validation/ https://github.com/webdigi/SMTP-Based-Email-Validation/blob/master/checkemailexample.php。 所有看起來都是一樣的。所有的工作完美的情況下,Gmail的情況下,但在其他郵件服務,如雅虎等無法正常工作等。 有沒有什麼辦法可以在發送郵件之前檢查所有的電子郵件ID?檢查電子郵件Id是否存在或在PHP

+1

檢查此鏈接http://stackoverflow.com/questions/565504/how-to-check-if-an-email-address-exists-without-sending-an-email – Elby

回答

1

我還沒有找到一個好的驗證工具。您最好的選擇是驗證格式是否正確。然後爲了測試它,請向用戶發送一條消息,並要求他們執行某種與您的網站鏈接的操作。您可以輕鬆使用php和數據庫來記錄用戶何時與您的網站進行交互。然後,您將確定該地址是有效的,並且適用於您想要的用戶。這也是避免被標記爲垃圾郵件的最佳做法。

這是最好的jQuery腳本我發現驗證格式:

function isValidEmailAddress(emailAddress) { 
    var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i); 
    return pattern.test(emailAddress); 
}; 
+0

強制性參考:http:// stackoverflow的.com /問題/ 201323 /使用-A-正則表達式到驗證-AN-電子郵件地址?RQ = 1 – Synchro

0

連接,發出RCPT TO和刪除的連接很可能讓你通過雅虎等列入黑名單。唯一可靠的方法是繼續併發送您想要發送的消息。如果成功,很好,如果不成功,最好有一個反彈處理程序準備好接收反彈,處理它,然後你會知道下一次。

通過簡單的RFC驗證,例如使用PHP的filter_var函數,你可以事先排除一些地址,因爲任何失敗的東西都不太可能傳遞,你也可以查看域是否存在並且可以接收郵件 - 檢查DNS中是否存在MX和A記錄 - 但除此之外,如果沒有真正發送消息,則無法分辨。

相關問題