2010-07-13 24 views
8

मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जहां एक एएसपी.NET एप्लिकेशन को फिर से लिखना है। पुराना एएसपी.नेट एप्लीकेशन .NET Framework 1.1 पर आधारित था। नया एएसपी.नेट आवेदन .NET Framework 3.5 पर आधारित है।एएसपी.नेट - SmtpClient - रिमोट सर्वर से कनेक्ट करने में असमर्थ

पुराने वेब एप्लिकेशन में से एक कार्य ईमेल भेजने की क्षमता थी। पुराने कोड ने System.Web.Mail.SmtpMail वर्ग का उपयोग किया, जबकि नया वेब एप्लिकेशन System.Net.Mail.SmtpClient वर्ग का उपयोग करता है।

हमारे विकास सर्वर पर इसका परीक्षण करने में, सबकुछ ठीक काम करता था। हालांकि, हमारे पास दो बीटा क्लाइंट हमारे सॉफ़्टवेयर का परीक्षण कर रहे हैं, और वे दोनों नए वेब एप्लिकेशन में ईमेल भेजने में समस्याएं चलाते हैं। इस प्रकार

विशिष्ट अपवाद है:

दूरस्थ सर्वर से कनेक्ट करने में असमर्थ ---> System.Net.Sockets.SocketException: क्योंकि लक्ष्य मशीन सक्रिय रूप से इसे मना कर दिया

कोई कनेक्शन नहीं बनाया जा सकता है

पुराने और नए एएसपी.NET दोनों एप्लिकेशन एक ही सर्वर (विंडोज सर्वर 2003) पर हैं। वे दोनों एक ही एक्सचेंज मेल सर्वर का उपयोग कर रहे हैं। ऐसा क्यों है कि पुराने एएसपी.NET एप्लिकेशन सफलतापूर्वक ईमेल भेज सकता है, लेकिन नया कोई नहीं कर सकता है?

मैंने पुराने कोड को देखा, और यह प्रमाणीकरण के किसी भी रूप का उपयोग नहीं किया, यह सिर्फ प्रेषक का ईमेल पता, प्राप्तकर्ता का ईमेल पता, विषय, शरीर और सर्वर निर्दिष्ट करता है, और संदेश भेजता है। मैंने नए कोड में एक ही काम किया, केवल अंतर यह है कि मैंने SmtpClient क्लास का उपयोग किया।

System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage(); 
mail.To.Add(messageTo); 
mail.From = new MailAddress(messageFrom); 
mail.Subject = messageSubject; 
mail.Body = messageBody; 

SmtpClient client = new SmtpClient(); 
client.Host = smtpServer; 
client.Send(mail); 
+0

क्या एक्सचेंज लॉग में कुछ भी है जो इसे कनेक्शन से इंकार कर देता है? – David

+0

मुझे उनके पास पहुंच नहीं है और मुझे नहीं लगता कि बीटा क्लाइंट भी उन तक पहुंच प्राप्त कर सकता है। फिर, यह हमारे अंत में ठीक काम किया। यह बहुत बुनियादी कार्यक्षमता है। – Chris

+0

आप सर्वर को कैसे निर्दिष्ट करते हैं? SmptClient के निर्माता, या web.config में? क्या आप कुछ कोड पोस्ट कर सकते हैं? – onof

उत्तर

5

"दूरस्थ सर्वर से कनेक्ट करने में असमर्थ ---> System.Net.Sockets.SocketException: क्योंकि लक्ष्य मशीन सक्रिय रूप से इसे मना कर दिया कोई कनेक्शन नहीं बनाया जा सकता है" त्रुटि आमतौर पर इसका मतलब है कि टीसीपी पोर्ट आप कर रहे हैं कनेक्ट करने का प्रयास करने पर कोई सेवा नहीं है, यानी यह बंद है और एक टीसीपी कनेक्शन नहीं बनाया जा सकता है, अकेले एक एसएमटीपी कनेक्शन दें।

आपके एक्सचेंज लॉग में कुछ भी नहीं दिखाया जाएगा क्योंकि यह नेटवर्क स्टैक में निचले स्तर पर विफल रहा है और आपके मेल सर्वर को कनेक्शन प्रयास भी नहीं दिखाई देगा।

क्या आप .net1.1 कोड भी पोस्ट कर सकते हैं? सबसे संभावित समस्या यह है कि सर्वर एक गैर मानक बंदरगाह पर सुन रहा है और आप उस कोड को नए कोड में निर्दिष्ट नहीं कर रहे हैं। कृपया ध्यान दें कि आपको Port संपत्ति का उपयोग करके पोर्ट सेट करने की आवश्यकता है, आप इसे Host संपत्ति में बस जोड़ नहीं सकते हैं, उदा।

गलत:

client.Host = "mail.someco.com:10000"; 

सही:

client.Host = "mail.someco.com"; 
client.Port = 10000; 
0

तुम्हें यकीन System.Web.Mail.SmtpMail की SmtpServer संपत्ति पुराने कोड में सेट कर दिया जाता हैं:

नीचे नई ASP.NET अनुप्रयोग से एक कोड का टुकड़ा है? इस संपत्ति को सेट किए बिना इसका उपयोग करना संभव था और फिर उसने स्थानीय सर्वर की एसएमटीपी सेवा का उपयोग किया। System.Web.Mail.SmtpMail.SmtpServer

0

यू SMTP मेजबान विन्यास के लिए web.config फ़ाइल की जाँच की है? आपको कॉन्फ़िगरेशन अनुभाग को अपने ऐप पर कॉपी करना चाहिए।

3

यदि आप किसी एंटीवायरस सॉफ़्टवेयर का उपयोग कर रहे हैं तो यह जांचने के लिए लॉग इन करें कि यह एंटीवायरस की वजह से है या नहीं। मुझे एक ही समस्या का सामना करना पड़ा जब मैकफी मेरे मेल को अवरुद्ध कर रहा था (वहां एक सुरक्षा नीति है - मेल भेजने से जन मेलिंग कीड़े को रोकें)। इस नीति को संपादित करें और अपवाद सूची में अपना आवेदन जोड़ें। मेरे मामले में इस समस्या को हल किया। कृपया जांचें कि यह आपके लिए काम करता है या नहीं।

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

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