2010-09-07 10 views
8

के साथ ईमेल भेजने में अस्थायी समस्याएं मुझे यहां एक स्टैक ट्रेस पोस्ट करने से नफरत है, लेकिन मैं विचारों से बाहर हूं ... मेरा ऐप वेबसाइट पर विभिन्न कार्यों के लिए ईमेल भेजता है, और 9 0% समय नहीं है समस्या का। हालांकि, हर बार अक्सर एएसपी.नेट एक अजीब अपवाद फेंकता है, जो मेल सर्वर कनेक्टिविटी से संबंधित प्रतीत होता है (मैं ईमेल के लिए Google व्यापार सर्वर का उपयोग करता हूं)। त्रुटि मेरे लिए डीबग करने के लिए बहुत सामान्य है, इसलिए नीचे स्टैक ट्रेस। मेरा ऐप अपवाद को कैप्चर करता है और एक सामान्य 'वापस 5 मिनट में पुनः प्रयास करें' लिखता है।एएसपी.NET

मैं यह त्रुटि द्वारा स्टम्प्ड रहा हूँ क्योंकि:

  • Google ईमेल आम तौर पर बहुत विश्वसनीय है (यह मेरे डोमेन से भेजा जा रहा है, नहीं, gmail.com)।
  • वॉल्यूम बहुत कम हैं, इसलिए यह लोडिंग/स्पैमिंग प्रकार की समस्या नहीं होनी चाहिए।
  • त्रुटि बहुत सामान्य है।
  • 5 मिनट में फिर से प्रयास करने से लगभग हमेशा किसी समस्या के बिना ईमेल को भेजने की अनुमति मिलती है, जिसमें कोई भी पैरामीटर (प्राप्तकर्ता, विषय, शरीर) बदल नहीं जाता है।

कोई विचार? केवल एकमात्र बकाया मुद्दों के बारे में मैं सोच सकता हूं कि:

  1. ईमेल भेजने सिंक्रोनस है। यह वही है जो मैं वास्तव में करना चाहता हूं, क्योंकि मैं उपयोगकर्ता को सफलता/विफलता स्थिति संदेश के साथ प्रतिक्रिया देना चाहता हूं।
  2. मैं एक सर्वर के रूप में अमेज़ॅन ईसी 2 का उपयोग कर रहा हूं, अगर इस मामले पर इसका कोई असर पड़ता है।

कोड:

public static void SendMail(String from, String to, String subject, String body, bool IsHtml) 
    { 
     MailMessage m = new MailMessage(from, to, subject, body); 
     m.IsBodyHtml = IsHtml; 

     SmtpClient smtpClient = new SmtpClient(); 
     smtpClient.EnableSsl = true; 
     smtpClient.Send(m); 
    } 

अपवाद:

System.Net.Mail.SmtpException: Error in processing. The server response was: 4.3.0 Mail server temporarily rejected message. m6sm2190005vcx.24 
at System.Net.Mail.DataStopCommand.CheckResponse(SmtpStatusCode statusCode, String serverResponse) 
at System.Net.Mail.DataStopCommand.Send(SmtpConnection conn) 
at System.Net.Mail.SmtpConnection.OnClose(Object sender, EventArgs args) 
at System.Net.ClosableStream.Close() 
at System.Net.Mail.MailWriter.Close() 
at System.Net.Mail.SmtpClient.Send(MailMessage message) 
+0

इस विशिष्ट त्रुटि पर एक Google खोज निष्पादित करने से संकेत मिलता है कि यह उन Google सर्वरों के साथ एक समस्या है जो उन्हें पता है।संकल्प लंबित –

उत्तर

5

मैंने पहले भी थोक ईमेल सिस्टम पर काम किया है। आपके द्वारा प्राप्त अपवाद संदेश पूरी तरह से वर्णनात्मक है: कि SMTP सर्वर अस्थायी रूप से मेल स्वीकार नहीं कर रहा है। इस स्थिति की एक संख्या के कारण हो सकता है:

  1. सर्वर व्यस्त है
  2. आप बहुत सारे ईमेल बहुत तेजी से (यह आप एक स्पैमर दिखने लायक बना सकता)
  3. जनरल त्रुटियों
भेज रहे हैं

तथ्य यह है कि बाद में ईमेल को पुनः प्रयास करने से यह संकेत मिलता है कि यह सामान्य, अपेक्षित व्यवहार है। इससे बचने के लिए आप कुछ भी अलग नहीं कर सकते हैं, यह आवश्यक है जब आईएसपी द्वारा ट्रैफिक को थ्रॉटल करने के लिए उपयोग की जाने वाली एक आम विधि है।

+0

आपके अनुभवों के आधार पर ... क्या पहली एसएमटीपी विफलता के तुरंत बाद दूसरी बार कोशिश करना अच्छा विचार है, जिसमें 1 सेकंड की देरी होती है? यह केवल अस्थायी मुद्दा प्रतीत होता है (आश्चर्यजनक, क्योंकि यह Google मेल है !!) और बस प्रेषण को दोहराते हुए समस्याएं दूर करने लगती हैं। –

+1

मैं गारंटी देता हूं कि आप इस त्रुटि के लिए Google, या किसी अन्य आईएसपी/ईएसपी के माध्यम से इस त्रुटि को प्राप्त करने वाले अकेले नहीं हैं। यह Google के अंत में एक "विफलता" जरूरी नहीं है- उस सर्वर पर कतार पूर्ण हो सकती है या कई अन्य आम मुद्दों में से कोई भी हो सकता है। एक सेकंड शायद पर्याप्त नहीं है, मैं कम से कम 30 सेकंड इंतजार करूंगा। –

+0

सलाह के लिए धन्यवाद! –

0

डेव स्वर्सकी ने जो कहा है उसके अलावा: आप उन ईमेल को स्टोर कर सकते हैं जिन्हें आप कहीं भेजना चाहते हैं (फाइल सिस्टम या डेटाबेस की तरह) और ई-मेल पीढ़ी को किसी सेवा द्वारा संभाला जाना चाहिए। आपकी सेवा भेजने के लिए नए ईमेल देखने के लिए देखेंगे। यदि भेजने के दौरान कोई त्रुटि उत्पन्न होती है, तो आप ई-मेल को कतार में वापस डाल सकते हैं और बाद में पुनः प्रयास कर सकते हैं।

शायद आप स्थानीय एसटीएमपीएस सर्वर का उपयोग भी कर सकते हैं जो Googleमेल को रिले सर्वर के रूप में उपयोग करता है। यह मामला है कि आप स्वयं को लिखने के बजाय अंतर्निहित पिकअप डायरेक्टरी कार्यक्षमता का उपयोग कर सकते हैं।