2010-10-07 16 views
20

मैंने कुछ PHP उदाहरणों को देखा है कि आप इनबॉक्स को कैसे पिंग कर सकते हैं (बिना किसी मेल भेजने के) यह जांचने के लिए कि यह मौजूद है या नहीं। मैं सोच रहा था कि अगर कोई जानता है कि यह .NET के साथ संभव है? अगर मैं ईमेल की सूची पर थोक जांच करने के लिए एक ऐप लिखने जा रहा हूं तो मैंने अपनी साइट के माध्यम से कब्जा कर लिया है।क्या मैं जांच सकता हूं कि कोई ईमेल पता .NET का उपयोग कर मौजूद है या नहीं?

+10

न केवल .NET में यह संभव नहीं है, यह बिल्कुल भी संभव नहीं है। –

+2

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

+3

@ डैनियल, मुझे लगता है कि फिलिप का अर्थ है "मैंने कुछ php उदाहरण देखे हैं", यह सवाल .NET के बारे में है। बेशक, भाषा के बावजूद सही जवाब है "कोई भरोसेमंद तरीका नहीं है"। –

उत्तर

7

यदि आप "ईमेल जांचें" लिखते हैं तो इसका क्या मतलब है? ईमेल स्वामी के लिए कुछ अनूठा लिंक भेजने के बिना आप इसे जांच नहीं सकते हैं, आप केवल ईमेल के सिंटैक्स की जांच कर सकते हैं, और smtp से कनेक्शन देख सकते हैं।

public static bool isEmail(string inputEmail) 
{ 
    inputEmail = NulltoString(inputEmail); 
    string strRegex = @"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" + 
     @"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" + 
     @".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"; 
    Regex re = new Regex(strRegex); 
    if (re.IsMatch(inputEmail)) 
    return (true); 
    else 
    return (false); 
} 

smtp जांच

string[] host = (address.Split('@')); 
string hostname = host[1]; 

IPHostEntry IPhst = Dns.Resolve(hostname); 
IPEndPoint endPt = new IPEndPoint(IPhst.AddressList[0], 25); 
Socket s= new Socket(endPt.AddressFamily, 
     SocketType.Stream,ProtocolType.Tcp); 
s.Connect(endPt); 
+0

और अधिक के लिए मेरा उत्तर जांचें सटीक वाक्यविन्यास जांच। होस्ट नाम संकल्प – Brad

+0

+1 कहां से 'NulltoString' आया था? – Brad

+0

के लिए – Dementic

0

यह सरल नहीं है। सबसे अच्छा आप कर सकते हैं सिंटैक्स जांचें और देखें कि डोमेन नाम हल हो गया है या नहीं।

ईमेल वाक्य रचना रेगुलर एक्सप्रेशन से: - भाषा से स्वतंत्र (?<username>#?[_a-zA-Z0-9-+]+(\.[_a-zA-Z0-9-+]+)*)@(?<domain>[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]{2,3})|(aero|arpa|asia|coop|info|jobs|mobi|museum|name|travel)))

+1

वैसे मैंने वोट नहीं दिया लेकिन ऐसा इसलिए हो सकता है क्योंकि सवाल विशेष रूप से सर्वर को पिंग करने के लिए एक समाधान के लिए पूछता है, सिंटैक्स की जांच नहीं करता है। हो सकता है कि आपके उत्तर के बाद प्रश्न बदल दिया गया हो। –

9

नहीं, यह एक ई-मेल से मौजूद है, तो जाँच करने के लिए सिद्धांत रूप में असंभव है। ऐसा करने के लिए बस कोई प्रोटोकॉल नहीं है।

कुछ आंशिक समाधान हैं, लेकिन उनमें से कोई भी विश्वसनीय नहीं है।

विवरण के लिए How to check if an email address exists without sending an email? देखें।

41

SMTP defines the VRFY command for this, लेकिन चूंकि स्पैमर द्वारा दुरुपयोग ने वैध उपयोगों की संख्या को पूरी तरह से अभिभूत कर दिया है, तो दुनिया में लगभग हर ई-मेल सर्वर configured to lie है।

+4

+1 यह समझाने के लिए कि ओपी चाहता है कि ऐसा करने का कोई विश्वसनीय तरीका क्यों न हो। एक व्यक्तिगत नोट पर, जो भी थोक ई-मेल कठिन बनाता है वह निर्विवाद रूप से एक अच्छी बात है। –

+0

+1 dittoing @ जोएल – Brad

+0

@ जोएल: ठीक है, वहां * वैध थोक मेल (मेलिंग सूचियां आदि) है। लेकिन यह सच है कि अधिकांश थोक मेल गैरकानूनी है, भले ही वह दुखी है। – sleske

-2
protected bool checkDNS(string host, string recType = "MX") 
{ 
    bool result = false; 
    try 
    { 
     using (Process proc = new Process()) 
     { 
      proc.StartInfo.FileName = "nslookup"; 
      proc.StartInfo.Arguments = string.Format("-type={0} {1}", recType, host); 
      proc.StartInfo.CreateNoWindow = true; 
      proc.StartInfo.ErrorDialog = false; 
      proc.StartInfo.RedirectStandardError = true; 
      proc.StartInfo.RedirectStandardOutput = true; 
      proc.StartInfo.UseShellExecute = false; 
      proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
      proc.OutputDataReceived += (object sender, DataReceivedEventArgs e) => 
       { 
        if ((e.Data != null) && (!result)) 
         result = e.Data.StartsWith(host); 
       }; 
      proc.ErrorDataReceived += (object sender, DataReceivedEventArgs e) => 
       { 
        if (e.Data != null) 
        { 
         //read error output here, not sure what for? 
        } 
       }; 
      proc.Start(); 
      proc.BeginErrorReadLine(); 
      proc.BeginOutputReadLine(); 
      proc.WaitForExit(30000); //timeout after 30 seconds. 
     } 
    } 
    catch 
    { 
     result = false; 
    } 
    return result; 
} 
+0

यह परीक्षण किया गया है और काम कर रहा है। मैं मूल रूप से PHP उदाहरण परिवर्तित कर दिया। –

3

http://www.codicode.com/art/free_asp_net_email_validator_verifier.aspx। अपने कोड के डीएलएल संदर्भ का प्रयोग करें। यह व्यक्तिगत उपयोग और पुनर्वितरण दोनों के लिए स्वतंत्र है। यह वास्तव में एक ईमेल भेजने के बिना डोमेन नाम अस्तित्व के लिए जाँच करता है।

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

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