2011-08-17 21 views
12

नीचे मेरी कोडन है, बस इसेयह पुष्टि कैसे करें कि मेल वितरित किया गया है या नहीं?

System.Net.Mail.MailMessage oMail = new System.Net.Mail.MailMessage(); 
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(); 
oMail.From = new System.Net.Mail.MailAddress("[email protected]"); 
oMail.To.Add(TextBox1.Text.Trim()); 
oMail.Subject = "Subject*"; 
oMail.Body = "Body*"; 
oMail.IsBodyHtml = true; 
smtp.Host = "smtp.sendgrid.net"; 
System.Net.NetworkCredential cred = new System.Net.NetworkCredential("myusername", "mypassword"); 
smtp.UseDefaultCredentials = false; 
smtp.Credentials = cred; 
smtp.Send(oMail); 

यहाँ मैं जाँच करने के लिए है कि क्या है कि मेल वितरित कर दिया गया है या नहीं की जरूरत है पर एक नजर है।

+0

तो आपको ईमेल में एक लिंक की आवश्यकता होगी कि प्राप्तकर्ता –

+0

सुनिश्चित करने के लिए यूआरएल या वेब सेवा पर वापस क्लिक करता है? मेजबान को मेल प्राप्त करें या पुष्टि करें कि रिसीवर मेल पढ़ता है? –

उत्तर

19

आप नहीं कर सकते। चूंकि आप सामान्य रूप से एसएमटीपी का उपयोग करते हैं, यह बताने में असंभव है कि वितरण सफल हुआ या नहीं। एसएमटीपी विनिर्देश पढ़ें। डिलीवर होने पर मेल रूट किया जाता है, इसलिए:

  1. कोई गारंटी नहीं है कि जैसे ही आप smtp.Send() पर कॉल करते हैं, आपका संदेश भेजा जाता है।
  2. चूंकि एसएमटीपी रूट किया गया है, तो आप यह सुनिश्चित नहीं कर सकते कि मार्ग पर कुछ नोड डिलीवरी के साथ डिलीवरी के साथ विफल नहीं होगा।
0

यदि आपको अपने कोड में या आपके एसएमटीपी सर्वर पर कोई अपवाद नहीं मिलता है, तो आप यह मान सकते हैं कि इसे वितरित किया गया है। यह ई-मेल के साथ एक समस्या है, वितरण की गारंटी देने का कोई तरीका नहीं है।

+0

स्पष्ट रूप से गलत! एसएमटीपी गारंटीकृत डिलीवरी नहीं है। जैसा कि किसी को पता होगा कि कई सप्ताह बाद एक डिलिवरी योग्य टिकट प्राप्त हुआ है ... –

+0

लेकिन, अगर कोई ईमेलिड बाउंस करता है तो यह कोई अपवाद नहीं दिखाता .. मैंने कई बार जांच की है ... क्या उछाल पाने का कोई तरीका है मेलर आईडी –

+0

इस कोड से नहीं, नहीं। –

8

आप DeliveryNotificationOptionsMailMessage से OnSuccess पर संपत्ति सेट कर सकते हैं। http://msdn.microsoft.com/en-us/library/system.net.mail.deliverynotificationoptions.aspx

और यहाँ:

यहां इस बारे में अधिक जानकारी नहीं है http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.deliverynotificationoptions.aspx

के रूप में टिप्पणी में बताया गया है, इस विधि 100% विश्वसनीय नहीं है। यह सिर्फ एक विकल्प है।

+4

यह 100% विश्वसनीय नहीं है। – agibalov

+2

अन्य दो उत्तरों की तुलना में अधिक विश्वसनीय जो बिल्कुल कुछ नहीं देता ... – Blindy

+0

अंधेरे: गलत। –

0

यदि आपके पास उपयोग किए गए सर्वर के प्रकार और विस्तार के स्तर के आधार पर एसएमटीपी लॉग युक्त सर्वर तक पहुंच है, तो आप डिलीवरी की वास्तविक सफलता के बारे में एक बेहतर विचार प्राप्त कर सकते हैं ।

उदाहरण के लिए यदि आप स्मार्टरमेल का उपयोग कर रहे हैं, तो आप smtp लॉग पढ़ने और अपने आवेदन पर वापस रिपोर्ट करने के लिए एक सरल पार्सर लिख सकते हैं। ऐसा नहीं है कि यह अवरुद्ध करने वाला ऑपरेशन नहीं होना चाहिए, जैसे कि आपका ईमेल greylisted है, इसे वितरित होने में कई मिनट लग सकते हैं।

एक और विकल्प सभी "noreply" ईमेल पते को पकड़ने के लिए है, और प्रेषक यानी [email protected] में शामिल ईमेल-आईडी के साथ अपने ईमेल भेजें और चेक करने के लिए एक पॉप 3 रीडर का उपयोग करें लौटाए गए ईमेल के लिए इनबॉक्स। "प्रेषक" में ईमेल आईडी का उपयोग करके आप काम कर सकते हैं कि कौन सा ईमेल भेजा जा सका। आप कुछ फ़िल्टरिंग भी कर सकते हैं यह निर्धारित कर सकते हैं कि क्या यह "डिलीवर करने में असमर्थ" है या बस "कार्यालय से बाहर" प्रकार का उत्तर है।

बहुत से विकल्प उपलब्ध हैं, बस इस बात पर निर्भर करता है कि आप कितना पसीना डालना चाहते हैं।

1

कुछ सबसे अच्छे तरीके ईमेल deliverability सुनिश्चित करने के लिए कर रहे हैं:

  • एक वास्तविक इनबॉक्स के रूप में एक भी कोई जवाब नहीं पता सेट अप और उसके बाद POP3 का उपयोग कर में जाने ईमेल खाते और उछाल वापस गए संदेशों के लिए देखें।
  • सत्यापित करें ईमेल पता मान्य है इससे पहले कि आप इस ईमेल सत्यापन पुस्तकालय की तरह कुछ का उपयोग कर भेज दें:

http://www.kellermansoftware.com/p-37-net-email-validation.aspx

1

मामले किसी में भर में ठोकर। एक्सचेंज के साथ पुराने विन 2003 सर्वर पर मेरा अनुभव यहां दिया गया है। मेरा .Net ऐप ईमेल भेजने के लिए एसएमटीपी का उपयोग करता है और समूह से "समूह" के रूप में उपयोग किया जाता है, इसलिए कोई भी जवाब पूरे समूह में जाएगा। यह एक प्रेषण अभियान है और हम समूह में किसी भी जवाब के साथ सहायता करना चाहते थे। हमें उम्मीद है कि समूह में कोई भी डिलीवरी नोटिस भेजे जाएंगे। ऐसा नहीं होता। मैं संदेश ट्रैकिंग में भी गया और देखा कि एक्सचेंज ने कहा कि उसने समूह को अधिसूचना भेजी है, लेकिन उन्हें कभी नहीं मिला। इसके बाद मैं एसएमटीपी वर्चुअल सर्वर गुणों में गया और "गैर-वितरण रिपोर्ट की प्रति भेजें:" में समूह ईमेल पता दर्ज किया। वही परिणाम, संदेश ट्रैकिंग का कहना है कि यह इसे समूह में भेज दिया गया लेकिन इसे कभी वितरित नहीं किया गया था। स्पष्ट रूप से गैर डिलीवरी नोटिस केवल एक व्यक्ति के ईमेल पते पर वितरित किए जाएंगे जो समूह नहीं है। मैंने इसे एक व्यक्तिगत पते में बदल दिया और यह काम करता है।

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

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