2011-12-28 15 views
9

मैं में निर्मित का उपयोग कर नेट है अमेज़न एसईएस नया SMTP सेवा के माध्यम से ईमेल भेजने के लिए कोशिश कर रहा हूँ SmtpClientअमेज़न एसईएस एसएमटीपी त्रुटि के माध्यम से ईमेल भेजा जा रहा

कोड:

var emailClient = new SmtpClient("email-smtp.us-east-1.amazonaws.com", 465); 
        emailClient.EnableSsl = true; 
.... 
emailClient.Send(message); 

मैं एक अपवाद प्राप्त करें:

परिवहन कनेक्शन से डेटा पढ़ने में असमर्थ: net_io_connectionclosed

Google का कहना है कि इस त्रुटि का अर्थ है कि मैं एसएमटीपी सर्वर तक नहीं पहुंच सकता। उन्हें टीएलएस की आवश्यकता होती है जिसे मैं "सक्षम एसएसएल" संपत्ति द्वारा प्राप्त किया गया है।

कोई भी जानता है कि इसे कैसे काम करने के लिए मुझे अपने कोड को ट्विक करने की आवश्यकता है?

संपादित करें:

मुझे लगता है कि मैं इस सवाल का बंद हो जाएगा। नहीं, यह SmtpClient के साथ मैं क्या चाहते हो पाना संभव नहीं है

https://forums.aws.amazon.com/thread.jspa?messageID=302112&#302112

+0

सीधे सवाल का जवाब नहीं दे रहा है, लेकिन आप AWSSDK.dll डाउनलोड कर सकते हैं और अपने स्वयं के एपीआई का उपयोग कर सकते हैं, यह वास्तव में अविश्वसनीय रूप से आसान है और आपको SMTP, संगतता, आईएसपी, आदि के बारे में चिंता करने की आवश्यकता नहीं है –

+1

जो मैं उपयोग कर रहा हूं अभी। लेकिन मैं हाल ही में इसे जारी करने के बाद से एसएमटीपी करना चाहता था। इस तरह मुझे AWSSDK – katit

+0

से निपटने की ज़रूरत नहीं है क्या आप कहीं भी अपना एसईएस उपयोगकर्ता नाम और पासवर्ड प्रदान कर रहे हैं? – arx

उत्तर

5

मैं पुष्टि कर सकता है कि यह STARTTLS और बंदरगाह 587

आशा है कि

+0

:(मैंने अभी परीक्षण किया है और डिफ़ॉल्ट SMTpClient के साथ केवल 2587 काम करता है। ठीक है, कम से कम यह विभिन्न बंदरगाहों को आजमाने के घंटे के बाद काम करता है ... – kape123

+1

आपका लिंक टूटा हुआ है। आपको इसे बदलना चाहिए या इसे हटा देना चाहिए –

0

आप web.config में सेट defaultCredentials = "false" है?

+0

मैं बहुत उत्सुक हूं कि आपका क्या मतलब है या यह क्यों काम करेगा: आप मानते हैं कि एक एएसपी.नेट वेब ऐप विकसित किया जा रहा है, मुझे लगता है, लेकिन वेब.कॉन्फिग में कुछ क्रेडेंशियल सेटिंग क्यों प्रभावित करती हैं एसएमटीपी कनेक्शन? –

+0

किसी भी भ्रम के लिए खेद है अगर मैंने "कॉन्फ़िगरेशन फ़ाइल" के अर्थ को गलत समझा, जिसे मैंने माना था, संबंधित SMTP सेटिंग्स के साथ Web.config था। जब मैंने (.NET) SMTP का उपयोग किया है और उपयोगकर्ता नाम और पासवर्ड की आपूर्ति करने की आवश्यकता है, तो मैंने अनुभाग में ऐसा किया था। अगर मैंने डिफ़ॉल्ट क्रेडिट सेट = गलत सेट नहीं किया है, तो कनेक्शन विफल हो जाएगा। –

5

अमेज़ॅन के अनुसार - यह समर्थित नहीं है जैसा हम करते थे।

https://forums.aws.amazon.com/thread.jspa?messageID=302112&#302112

नेट ईमेल टीएलएस पुस्तकालयों केवल STARTTLS जो एसईएस आज समर्थन नहीं करता है समर्थन करते हैं। हम "टीएलएस रैपर" या एसएमटीपीएस प्रमाणीकरण कहलाते हैं। मैं समझ सकता हूं कि यह निराशाजनक कैसे होगा, लेकिन आप ओपनएसएसएल का उपयोग उस सॉफ्टवेयर के माध्यम से हमारे कंप्यूटर पर चल रहे हैं ताकि हमारे एसएमटीपी एंडपॉइंट के खिलाफ प्रोग्राम के लिए .NET का उपयोग किया जा सके।

1

कोई भी जो सामान्य .NET SMTPClient के साथ भेजना चाहता है। यह संभव है क्योंकि आपको केवल एक रैपर चाहिए।

यहाँ सभी जानकारी के साथ एक लिंक है:

http://docs.amazonwebservices.com/ses/latest/DeveloperGuide/SMTP.Client.html

सुरंग सॉफ्टवेयर स्थापित करें और कॉन्फ़िगर के रूप में लिंक का वर्णन तो इसकी के रूप में सरल रूप में:

System.Net.Mail.SmtpClient sc = new SmtpClient(); 
sc.Host = host; 
sc.Port = port; 
sc.Credentials = new NetworkCredential(username, password); 
sc.Send(mm); 
8

यह संभव है पोर्ट 587 निर्दिष्ट करके ऐसा करें।

<system.net> 
    <mailSettings> 
    <smtp deliveryMethod="Network"> 
     <network enableSsl="true" port="587" host="email-smtp.us-east-1.amazonaws.com" password="[password]" userName="[username]"/> 
    </smtp> 
    </mailSettings> 
</system.net> 
कि विन्यास के रूप में साथ

, आप के रूप में आप सामान्य रूप से

var client = new SmtpClient(); 
var message = new MailMessage(fromemail, recipient, subject, body); 
client.Send(message); 
+0

मुझे लगता है कि यह अभी जोड़ा गया था। क्या आप अमेज़ॅन एसईएस दस्तावेज से लिंक पोस्ट कर सकते हैं जहां वे पोर्ट 587 के लिए समर्थन की पुष्टि करते हैं? – katit

+0

मेरे पास एक ही कॉन्फ़िगरेशन विंडोज 7 पर एक ही विन्यास काम करता है लेकिन विंडोज एक्सपी पर नहीं। कोई विचार क्यों? –

+0

@ कटिट: यह आधिकारिक घोषणा है: http://aws.amazon.com/de/about-aws/newsletters/2012/03/15/March2012/ अधिक जानकारी के लिए मेरे उत्तर में ब्लॉग पोस्ट देखें – Masterfu

3

अब एसईएस STARTTTLS का समर्थन करता है होगा SmtpClient का उपयोग कर सकते हैं:

आउटगोइंग सर्वर (SMTP) -25, 587, या 2587 (STARTTLS का उपयोग करने के लिए कनेक्ट करने के लिए), या 465 या 2465 (टीएलएस रैपर का उपयोग करके कनेक्ट करने के लिए)।

Pruf लिंक: http://s3.amazonaws.com/awsdocs/ses/latest/ses-dg.pdf

+0

मुझे केवल पोर्ट 587 SmtpClient के साथ काम किया। – swax

4

masterfu अपने ब्लॉग पोस्ट में उल्लेख के रूप में मदद करता है के साथ काम करता है, अमेज़न एसईएस शुरू कर दिया समर्थन STARTTLS मार्च 2012 में।

नीचे वह कोड है जिसे मैं अमेज़ॅन के साथ काम कर रहा एसएमटीपी प्राप्त करता था।

string username = ConfigurationManager.AppSettings["AWSSMTPUser"]; 
    string password = ConfigurationManager.AppSettings["AWSSMTPPass"]; 

    SmtpClient smtp = new SmtpClient(); 
    smtp.Host = "email-smtp.us-east-1.amazonaws.com"; 
    smtp.Port = 587; 
    smtp.UseDefaultCredentials = false; 
    smtp.Credentials = new NetworkCredential(username, password); 
    smtp.EnableSsl = true; 

    smtp.Send(mail); 
0

पोर्ट नंबर का उपयोग करने का प्रयास करें। 2587, अन्य बंदरगाह 25, 425, 587 मेरे मामले के लिए काम करते हैं।

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