2011-03-25 8 views
5

क्या कोई ईमेल पता पिंग करने के लिए वैसे भी है या ऐसा कुछ जांचना है जो वास्तविक कार्य पता है। मैं regex या php मान्य फिल्टर आदि के बारे में बात नहीं कर रहा हूं, लेकिन वास्तव में पता जांच रहा है ??वास्तविक ईमेल पते की जांच करने के लिए पिंग

+7

एक ईमेल भेजें और उन्हें मान्य करने के लिए एक लिंक पर क्लिक किया है? मेल सर्वर का एक अच्छा सौदा यह सत्यापित करने के लिए कॉन्फ़िगर नहीं किया गया है कि कोई ईमेल पता मौजूद नहीं है, और यहां तक ​​कि जो भी करते हैं, हमेशा एक त्रुटि वापस नहीं भेजते हैं। –

+0

आप एक सर्वर पिंग कर सकते हैं, ईमेल पता नहीं। लेकिन अगर आप इसे पिंग करेंगे, तो इसका मतलब यह नहीं है कि ईमेल पता वास्तविक है। – usoban

+3

संभावित डुप्लिकेट [ईमेल भेजने के बिना कोई ईमेल पता मौजूद है या नहीं?] (Http://stackoverflow.com/questions/565504/how-to-check-if-an-email-address-exists-without- भेजने-एक-ईमेल) –

उत्तर

3

यह संभव है, लेकिन प्राप्तकर्ता मेलसेवर से कनेक्ट करने के लिए विश्वसनीय नहीं है और मेल प्रदान करता है, जिससे मेलसेवर मेल को अस्वीकार या स्वीकार करने के लिए प्रेरित करता है। सभी मेल सर्वर एड्रेस की वैधता की जांच नहीं करेंगे, इसलिए इस पर भरोसा न करें। इसी तरह के प्रश्न here

+1

विश्वसनीयता की कमी के अलावा, यह प्रदर्शन और उपयोगकर्ता अनुभव पर भी बुरा प्रभाव डाल सकता है, क्योंकि आपको कुछ टाइमआउट के साथ सॉकेट कनेक्शन खोलना है। –

1

आप अगर वहाँ इसी डोमेन के एमएक्स रिकॉर्ड कर रहे हैं देखने के लिए जाँच कर सकते हैं: getmxrr() http://php.net/manual/en/function.getmxrr.php

लेकिन मैं एक दो भाग मान्यता उपयोग करने का सुझाव होगा: - पहला इनपुट के मैदान सत्यापन के लिए एक simple regex - फिर एक simple जांच अगर टीएलडी वैध

// pattern was taken from PHP's own source 
$pattern = "/^((\\\"[^\\\"\\f\\n\\r\\t\\b]+\\\")|([A-Za-z0-9_][A-Za-z0-9_\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]*(\\.[A-Za-z0-9_\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]*)*))@((\\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9])(([A-Za-z0-9\\-])*([A-Za-z0-9]))?(\\.(?=[A-Za-z0-9\\-]))?)+[A-Za-z]+))$/D"; 
if (preg_match($pattern, $email)) { 
    /** 
    * allow ip address as domain OR it should be a valid TLD 
    */ 
    $long = ip2long(substr($email, strrpos($email, '@')+1)); 
    return (($long !==FALSE && $long>-1) 
     || isValidTld(substr($email, strrpos($email, '.')+1))); 
} 

है देखने के लिए यह अभी भी कोई गारंटी है कि यह एक ईमेल भेजने और संभव बाउंस पकड़ने के अलावा अन्य लेकिन काम करता है ... यह बहुत ज्यादा (अलग टी से है वह एमएक्स की जांच) यह ...

+0

'filter_var ($ ईमेल, FILTER_VALIDATE_EMAIL) 'के साथ क्या गलत है? – biakaveron

+0

मूल रूप से वही बात;) – Gekkie

2

जांच होस्ट नाम के लिए उपयोगी समारोह मौजूद हैं (90% काम किया):

function validate_email($email) 
{ 
    if(!preg_match ("/^[\w\.-]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]+$/", $email)) 
     return false; 
    list($prefix, $domain) = explode("@",$email); 
    if(function_exists("getmxrr") && getmxrr($domain, $mxhosts)) 
     return true; 
    elseif (@fsockopen($domain, 25, $errno, $errstr, 5)) 
     return true; 
    else 
     return false; 
} 
+1

इस बारे में आप कितने आश्वस्त हैं? – MJoraid

संबंधित मुद्दे