जावामेल एपीआई - एसएमटीपी सर्वर

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 सर्वर का उपयोग करने के उदाहरणों को अध्याय भेजने वाले ईमेल में प्रदर्शित किया जाता है ।