जावामेल एपीआई - एसएमटीपी सर्वर
SMTP इसके लिए एक संक्षिप्त नाम है Simple Mail Transfer Protocol। यह इंटरनेट प्रोटोकॉल (आईपी) नेटवर्क पर इलेक्ट्रॉनिक मेल (ई-मेल) ट्रांसमिशन के लिए एक इंटरनेट मानक है। एसएमटीपी टीसीपी पोर्ट 25 का उपयोग करता है। एसएसएल द्वारा सुरक्षित एसएमटीपी कनेक्शन को शॉर्टहैंड एसएमटीपीएस द्वारा जाना जाता है, हालांकि एसएमटीपीएस अपने आप में एक प्रोटोकॉल नहीं है।
JavaMail API में पैकेज है com.sun.mail.smtpजो SMTP सर्वर तक पहुँचने के लिए SMTP प्रोटोकॉल प्रदाता के रूप में कार्य करता है। निम्न तालिका इस पैकेज में शामिल वर्गों को सूचीबद्ध करती है:
कक्षा | विवरण |
---|---|
SMTPMessage | यह वर्ग MimeMessage वर्ग का एक विशेषज्ञता है जो आपको विभिन्न एसएमटीपी विकल्पों और मापदंडों को निर्दिष्ट करने की अनुमति देता है जो इस संदेश को एसएमटीपी पर भेजे जाने पर उपयोग किया जाएगा। |
SMTPSSLTransport | यह वर्ग संदेश प्रस्तुत करने और परिवहन के लिए SSL पर SMTP का उपयोग करके परिवहन सार वर्ग को लागू करता है। |
SMTPTransport | यह वर्ग संदेश प्रस्तुत करने और परिवहन के लिए SMTP का उपयोग करके परिवहन सार वर्ग को लागू करता है। |
निम्न तालिका फेंके गए अपवादों को सूचीबद्ध करती है:
अपवाद | विवरण |
---|---|
SMTPAddressFailedException | यह अपवाद तब फेंका जाता है जब संदेश नहीं भेजा जा सकता। |
SMTPAddressSucceededException | जब Mail.smtp.reportsuccess गुण सत्य है , तो यह अपवाद SendFailedException को बंद कर दिया जाता है। |
SMTPSenderFailedException | यह अपवाद तब फेंका जाता है जब संदेश नहीं भेजा जा सकता। |
SMTPSendFailedException | यह अपवाद तब फेंका जाता है जब संदेश भेजा नहीं जा सकता। अपवाद में प्रेषक का पता शामिल होता है, जिसे मेल सर्वर ने अस्वीकार कर दिया है। |
com.sun.mail.smtpप्रदाता एसएमटीपी प्रमाणीकरण का वैकल्पिक रूप से उपयोग करते हैं। SMTP प्रमाणीकरण का उपयोग करने के लिए आपको SMTP सर्वर से कनेक्ट करते समय mail.smtp.auth गुण सेट करना होगा या SMTP ट्रांसपोर्ट को उपयोगकर्ता नाम और पासवर्ड प्रदान करना होगा। आप निम्न तरीकों में से एक का उपयोग करके ऐसा कर सकते हैं:
अपना मेल सत्र बनाते समय एक प्रमाणक ऑब्जेक्ट प्रदान करें और प्रमाणक कॉलबैक के दौरान उपयोगकर्ता नाम और पासवर्ड की जानकारी प्रदान करें। mail.smtp.user संपत्ति को कॉलबैक के लिए एक डिफ़ॉल्ट उपयोगकर्ता नाम प्रदान करने के लिए सेट किया जा सकता है, लेकिन पासवर्ड को अभी भी स्पष्ट रूप से निर्धारित करने की आवश्यकता होगी। यह दृष्टिकोण आपको संदेश भेजने के लिए स्थैतिक परिवहन भेजने की विधि का उपयोग करने की अनुमति देता है। उदाहरण के लिए:
Transport.send(message);
स्पष्ट रूप से उपयोगकर्ता नाम और पासवर्ड तर्कों के साथ ट्रांसपोर्ट कनेक्ट विधि को कॉल करें। उदाहरण के लिए:
Transport tr = session.getTransport("smtp");
tr.connect(smtphost, username, password);
msg.saveChanges();
tr.sendMessage(msg, msg.getAllRecipients());
tr.close();
SMTP प्रोटोकॉल प्रदाता निम्नलिखित गुणों का समर्थन करता है, जो JavaMail सत्र ऑब्जेक्ट में सेट किया जा सकता है। गुण हमेशा स्ट्रिंग्स के रूप में सेट होते हैं। उदाहरण के लिए:
props.put("mail.smtp.port", "587");
यहां ही Type स्तंभ बताता है कि स्ट्रिंग की व्याख्या कैसे की जाती है।
नाम | प्रकार | विवरण |
---|---|---|
mail.smtp.user | तार | SMTP के लिए डिफ़ॉल्ट उपयोगकर्ता नाम। |
mail.smtp.host | तार | से कनेक्ट करने के लिए SMTP सर्वर। |
mail.smtp.port | पूर्णांक | कनेक्ट करने के लिए SMTP सर्वर पोर्ट, यदि कनेक्ट () विधि स्पष्ट रूप से एक निर्दिष्ट नहीं करता है। 25 की कमी। |
mail.smtp.connectiontimeout | पूर्णांक | सॉकेट कनेक्शन टाइमआउट मान मिलीसेकंड में। डिफ़ॉल्ट अनंत टाइमआउट है। |
mail.smtp.timeout | पूर्णांक | सॉकेट I / O टाइमआउट मान मिलीसेकंड में। डिफ़ॉल्ट अनंत टाइमआउट है। |
mail.smtp.from | तार | SMTP मेल कमांड के लिए उपयोग करने के लिए ईमेल पता। यह लिफाफा रिटर्न पता सेट करता है। Msg.getFrom () या InternetAddress.getLocalAddress () के लिए डिफ़ॉल्ट। |
mail.smtp.localhost | तार | SMTP हेलो या EHLO कमांड में स्थानीय होस्ट नाम का उपयोग किया जाता है। InetAddress.getLocalHost ()। GetHostName () के लिए डिफ़ॉल्ट। यदि आपकी JDK और आपकी नाम सेवा ठीक से कॉन्फ़िगर की गई है, तो इसे सामान्य रूप से सेट करने की आवश्यकता नहीं है। |
mail.smtp.localaddress | तार | SMTP सॉकेट बनाते समय स्थानीय पता (होस्ट नाम) बांधने के लिए। सॉकेट क्लास द्वारा उठाए गए पते पर दोष। आम तौर पर सेट करने की आवश्यकता नहीं होनी चाहिए। |
mail.smtp.localport | पूर्णांक | SMTP सॉकेट बनाते समय बाँधने के लिए स्थानीय पोर्ट संख्या। सॉकेट क्लास द्वारा उठाए गए पोर्ट नंबर की कमी। |
mail.smtp.ehlo | बूलियन | यदि गलत है, तो EHLO कमांड के साथ साइन इन करने का प्रयास न करें। सत्य की अवहेलना। |
mail.smtp.auth | बूलियन | यदि सही है, तो AUTH कमांड का उपयोग करके उपयोगकर्ता को प्रमाणित करने का प्रयास करें। झूठे की अवहेलना। |
mail.smtp.auth.mechanisms | तार | यदि सेट किया जाता है, तो प्रमाणीकरण तंत्र को विचार करने के लिए सूचीबद्ध करता है। केवल सर्वर द्वारा समर्थित और वर्तमान कार्यान्वयन द्वारा समर्थित तंत्र का उपयोग किया जाएगा। डिफ़ॉल्ट "LOGIN PLAIN DIGEST-MD5 NTLM" है, जिसमें वर्तमान कार्यान्वयन द्वारा समर्थित सभी प्रमाणीकरण तंत्र शामिल हैं। |
mail.smtp.auth.login.disable | बूलियन | यदि सही है, तो AUTH LOGIN कमांड के उपयोग को रोकता है। डिफ़ॉल्ट गलत है। |
mail.smtp.auth.plain.disable | बूलियन | यदि सही है, तो AUTH PLAIN कमांड के उपयोग को रोकता है। डिफ़ॉल्ट गलत है। |
mail.smtp.auth.digest-md5.disable | बूलियन | यदि सही है, तो AUTH DIGEST-MD5 कमांड के उपयोग को रोकता है। डिफ़ॉल्ट गलत है। |
mail.smtp.auth.ntlm.disable | बूलियन | यदि सही है, तो AUTH NTLM कमांड के उपयोग को रोकता है। डिफ़ॉल्ट गलत है। |
mail.smtp.auth.ntlm.domain | तार | NTLM प्रमाणीकरण डोमेन। |
mail.smtp.auth.ntlm.flags | पूर्णांक | NTLM प्रोटोकॉल-विशिष्ट झंडे। |
mail.smtp.submitter | तार | मेल से कमांड में AUTH टैग में उपयोग करने के लिए जमाकर्ता। आमतौर पर एक मेल रिले द्वारा संदेश के मूल प्रस्तुतकर्ता के बारे में जानकारी देने के लिए उपयोग किया जाता है। |
mail.smtp.dsn.notify | तार | RCPT कमांड के लिए NOTIFY विकल्प। या तो कभी, या सफलता, असफलता और DELAY (कॉमा द्वारा अलग) के कुछ संयोजन। |
mail.smtp.dsn.ret | तार | मेल आदेश को RET विकल्प। या तो पूर्ण या एचडीआरएस। |
mail.smtp.sendpartial | बूलियन | यदि यह सच है, और एक संदेश में कुछ वैध और कुछ अमान्य पते हैं, तो SendFailedException के साथ आंशिक विफलता की रिपोर्ट करते हुए, संदेश को वैसे भी भेजें। यदि गलत (डिफ़ॉल्ट) पर सेट किया गया है, तो अमान्य प्राप्तकर्ता का पता होने पर किसी भी प्राप्तकर्ता को संदेश नहीं भेजा जाता है। |
mail.smtp.sasl.enable | बूलियन | यदि यह सही है, तो लॉगिन के लिए एक प्रमाणीकरण तंत्र चुनने के लिए javax.security.sasl पैकेज का उपयोग करने का प्रयास करें। झूठे की अवहेलना। |
mail.smtp.sasl.mechanisms | तार | एक स्थान या अल्पविराम का उपयोग करने की कोशिश करने के लिए एसएएसएल तंत्र नामों की सूची अलग। |
mail.smtp.sasl.authorizationid | तार | एसएएसएल प्रमाणीकरण में उपयोग करने के लिए प्राधिकरण आईडी। यदि सेट नहीं है, तो प्रमाणीकरण आईडी (उपयोगकर्ता नाम) का उपयोग किया जाता है। |
mail.smtp.sasl.realm | तार | DIGEST-MD5 प्रमाणीकरण के साथ उपयोग करने का क्षेत्र। |
mail.smtp.quitwait | बूलियन | यदि गलत पर सेट किया गया है, तो QUIT कमांड भेजा जाता है और कनेक्शन तुरंत बंद कर दिया जाता है। यदि सही (डिफ़ॉल्ट) पर सेट किया जाता है, तो परिवहन QUIT कमांड के जवाब के लिए प्रतीक्षा करने का कारण बनता है। |
mail.smtp.reportsuccess | बूलियन | यदि सही पर सेट किया जाता है, तो परिवहन में सफल होने वाले प्रत्येक पते के लिए SMTPAddressSucceededException शामिल करने का कारण बनता है। |
mail.smtp.socketFactory | सॉकेट फैक्टरी | यदि javax.net.SocketFactory इंटरफ़ेस को लागू करने वाले वर्ग के लिए सेट किया गया है, तो इस वर्ग का उपयोग SMTP सॉकेट बनाने के लिए किया जाएगा। |
mail.smtp.socketFactory.class | तार | यदि सेट किया गया है, तो javax.net.SocketFactory इंटरफ़ेस को लागू करने वाले वर्ग का नाम निर्दिष्ट करता है। इस वर्ग का उपयोग SMTP सॉकेट बनाने के लिए किया जाएगा। |
mail.smtp.socketFactory.fallback | बूलियन | यदि सही पर सेट किया गया है, तो निर्दिष्ट सॉकेट फैक्ट्री क्लास का उपयोग करके सॉकेट बनाने में विफलता के कारण सॉकेट को java.net.Socket क्लास का उपयोग करके बनाया जाएगा। सत्य की अवहेलना। |
mail.smtp.socketFactory.port | पूर्णांक | निर्दिष्ट सॉकेट कारखाने का उपयोग करते समय कनेक्ट करने के लिए पोर्ट निर्दिष्ट करता है। यदि सेट नहीं है, तो डिफ़ॉल्ट पोर्ट का उपयोग किया जाएगा। |
mail.smtp.ssl.enable | बूलियन | यदि सही पर सेट किया गया है, तो SSL पोर्ट को डिफ़ॉल्ट रूप से कनेक्ट और उपयोग करने के लिए SSL का उपयोग करें। "Smtp" प्रोटोकॉल के लिए गलत और "smtps" प्रोटोकॉल के लिए सही है। |
mail.smtp.ssl.checkserveridentity | बूलियन | यदि सही पर सेट किया गया है, तो RFC 2595 द्वारा निर्दिष्ट सर्वर पहचान की जाँच करता है। असत्य को परिभाषित करता है। |
mail.smtp.ssl.trust | तार | यदि सेट किया गया है, और एक सॉकेट फैक्ट्री निर्दिष्ट नहीं की गई है, तो एक MailSSLSocketFactory का उपयोग करने में सक्षम बनाता है। यदि "*" पर सेट किया जाता है, तो सभी होस्ट विश्वसनीय हैं। यदि मेजबानों की व्हाट्सएप से अलग सूची में सेट किया जाता है, तो उन मेजबान पर भरोसा किया जाता है। अन्यथा, सर्वर द्वारा प्रस्तुत प्रमाण पत्र पर विश्वास निर्भर करता है। |
mail.smtp.ssl.socketFactory | एसएसएल सॉकेट फैक्टरी | यदि javax.net.ssl.SSLSocketFactory वर्ग का विस्तार करने वाले वर्ग के लिए सेट किया जाता है, तो इस वर्ग का उपयोग SMTP SSL सॉकेट बनाने के लिए किया जाएगा। |
mail.smtp.ssl.socketFactory.class | तार | यदि सेट किया जाता है, तो javax.net.ssl.SSLSocketFactory वर्ग का विस्तार करने वाले वर्ग का नाम निर्दिष्ट करता है। इस वर्ग का उपयोग SMTP SSL सॉकेट बनाने के लिए किया जाएगा। |
mail.smtp.ssl.socketFactory.port | पूर्णांक | निर्दिष्ट सॉकेट कारखाने का उपयोग करते समय कनेक्ट करने के लिए पोर्ट निर्दिष्ट करता है। यदि सेट नहीं है, तो डिफ़ॉल्ट पोर्ट का उपयोग किया जाएगा। |
mail.smtp.ssl.protocols | तार | SSL प्रोटोकॉल निर्दिष्ट करता है जो SSL कनेक्शन के लिए सक्षम होगा। संपत्ति का मूल्य javax.net.ssl.SSLSocket.setEnabledProtocols विधि से स्वीकार्य टोकन की एक अलग व्हाट्सएप सूची है। |
mail.smtp.starttls.enable | बूलियन | यदि सही है, तो किसी भी लॉगिन आदेश जारी करने से पहले टीएलएस-संरक्षित कनेक्शन से कनेक्शन को स्विच करने के लिए STARTTLS कमांड (यदि सर्वर द्वारा समर्थित है) के उपयोग को सक्षम करता है। झूठे की अवहेलना। |
mail.smtp.starttls.required | बूलियन | यदि सही है, तो STARTTLS कमांड के उपयोग की आवश्यकता है। यदि सर्वर STARTTLS कमांड का समर्थन नहीं करता है, या कमांड विफल रहता है, तो कनेक्ट विधि विफल हो जाएगी। झूठे की अवहेलना। |
mail.smtp.socks.host | तार | SOCKS5 प्रॉक्सी सर्वर के होस्ट नाम को निर्दिष्ट करता है जिसका उपयोग मेल सर्वर के कनेक्शन के लिए किया जाएगा। |
mail.smtp.socks.port | तार | SOCKS5 प्रॉक्सी सर्वर के लिए पोर्ट नंबर निर्दिष्ट करता है। यदि प्रॉक्सी सर्वर 1080 की मानक पोर्ट संख्या का उपयोग नहीं कर रहा है, तो इसे केवल उपयोग करने की आवश्यकता है। |
mail.smtp.mailextension | तार | एक्सटेंशन स्ट्रिंग मेल कमांड को जोड़ने के लिए। |
mail.smtp.userset | बूलियन | यदि यह सही है, तो सम्मिलित विधि में NOOP कमांड के बजाय RSET कमांड का उपयोग करें। कुछ मामलों में Sendmail कई NOOP कमांड के बाद धीरे-धीरे जवाब देगा; RSET का उपयोग इस प्रेषक समस्या से बचा जाता है। झूठे की अवहेलना। |
सामान्य तौर पर, अनुप्रयोगों को सीधे इस पैकेज में कक्षाओं का उपयोग करने की आवश्यकता नहीं होनी चाहिए। इसके बजाय, उन्हें javax.mail पैकेज (और उप-पैकेज) द्वारा परिभाषित एपीआई का उपयोग करना चाहिए। उदाहरण के लिए कहें कि अनुप्रयोगों को कभी भी सीधे SMTPTransport के उदाहरणों का निर्माण नहीं करना चाहिए। इसके बजाय, उन्हें एक उपयुक्त परिवहन वस्तु प्राप्त करने के लिए सत्र विधि getTransport का उपयोग करना चाहिए।
SMPT सर्वर का उपयोग करने के उदाहरणों को अध्याय भेजने वाले ईमेल में प्रदर्शित किया जाता है ।