我通過php發送用戶激活鏈接,我只有一個正則表達式來檢查電子郵件是否由*@*.*
組成,這很好,但我想檢查電子郵件是否也實際發送。發送郵件並驗證實際的電子郵件?
我試着用
if (mail(....)) {
// success
} else {
// error
}
做這個但是,當我進入[email protected]
電子郵件仍然通過對成功的一步去。
我怎樣才能真正檢查它是否是一個正確的電子郵件在PHP中,謝謝。
我通過php發送用戶激活鏈接,我只有一個正則表達式來檢查電子郵件是否由*@*.*
組成,這很好,但我想檢查電子郵件是否也實際發送。發送郵件並驗證實際的電子郵件?
我試着用
if (mail(....)) {
// success
} else {
// error
}
做這個但是,當我進入[email protected]
電子郵件仍然通過對成功的一步去。
我怎樣才能真正檢查它是否是一個正確的電子郵件在PHP中,謝謝。
從PHP文檔
布爾郵件(字符串$到,串$主題,串$消息[,字符串$ additional_headers [,字符串$ additional_parameters])
返回true郵件已成功接受發送,否則爲FALSE 。
重要的是要注意,僅僅因爲郵件被接受爲 交付,它並不意味着郵件實際上會到達預期的 目的地。
只是因爲電子郵件地址格式正確並不意味着在該位置有實際的郵箱。 PHP無法「檢查」電子郵件地址是否存在/處於活動狀態。這是激活鏈接的全部目的,以驗證某人正在檢查該電子郵件地址。
驗證電子郵件
if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
echo "VALID";
}
preoperly地址的電子郵件服務器將返回true在接受電子郵件,它不知道它是否會得到用戶要做到這一點的唯一途徑,而我確信你已經看到它,是讓收件人單擊電子郵件中的鏈接,將它們發送回您的網站,然後您知道它的有效\使用地址。
+1 for filter_var()。使用它而不是一個簡單的正則表達式。即使是最複雜的正則表達式也無法讓所有可能的方式將一個RFC 5322兼容地址放在一起。你想出的東西幾乎肯定會失敗。
但是您並沒有詢問地址格式驗證,您詢問了有關檢查郵件是否已發送的問題。激活鏈接的全部目的是驗證電子郵件地址。如果您定期清理未經驗證的帳戶,則電子郵件地址結構是否正確無關緊要。通過發送鏈接,您可以進行全電路測試,繞過filter_var()可能存在的任何可能的格式錯誤解釋。
cgwebprojects對不起,但你錯了。我上面發佈的內容是正確的。你現在要問一個完全不同的問題 「我只有一個正則表達式來檢查電子郵件是否包含*@*.*,這很好,但我想檢查電子郵件是否實際發送。」 您只問是否發送。你從未要求驗證電子郵件。當然@Dagon是正確的檢查一個有效的電子郵件,但你要求「但我想檢查電子郵件實際上是否也發送」 – JoshStrange 2011-12-19 19:20:02
我不同意,所有主要的在線電子郵件服務,其中一些使用PHP會告訴你該電子郵件地址在嘗試發送時不是實際的電子郵件地址。 – cgwebprojects 2011-12-19 19:20:25
我在問上面的同樣的問題,我如何驗證實際的電子郵件,我的方法顯然是錯誤的,但說php不能做到這一點只是簡單的傻! – cgwebprojects 2011-12-19 19:21:28