IMAP सर्वर से कनेक्ट करना
यह ImapClient क्लास एप्लिकेशन को IMAP प्रोटोकॉल का उपयोग करके IMAP मेलबॉक्स प्रबंधित करने की अनुमति देती है। ImapClient क्लास का उपयोग IMAP मेल सर्वरों से कनेक्ट करने और IMAP ईमेल फ़ोल्डरों में ईमेल प्रबंधित करने के लिए किया जाता है। IMAP सर्वर से कनेक्ट करने के लिए
- का एक इंस्टेंस बनाएं ImapClient क्लास।
- होस्टनाम, उपयोगकर्ता नाम और पासवर्ड को निर्दिष्ट करें ImapClient कन्स्ट्रक्टर.
एक बार ImapClient इंस्टेंस शुरू किया जाता है, इस इंस्टेंस का उपयोग करके अगले किसी भी ऑपरेशन कॉल पर सर्वर से कनेक्ट हो जाएगा। नीचे दिया गया कोड स्निपेट दिखाता है कि ऊपर बताए गए चरणों का उपयोग करके IMAP सर्वर से कैसे कनेक्ट करें।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an imapclient with host, user and password
ImapClient client = new ImapClient("localhost", "user", "password");
SSL सक्षम IMAP सर्वर से कनेक्ट करना
IMAP सर्वर से कनेक्ट करना चार सरल चरणों में IMAP सर्वर से कनेक्ट करने का विवरण दिया गया है:
- का एक इंस्टेंस बनाएं ImapClient क्लास।
- होस्टनाम, उपयोगकर्ता नाम और पासवर्ड निर्दिष्ट करें।
- पोर्ट निर्दिष्ट करें।
- निर्दिष्ट करें सुरक्षा विकल्प.
SSL सक्षम IMAP सर्वर से कनेक्ट करने की प्रक्रिया समान है लेकिन इसके लिए कुछ अतिरिक्त प्रॉपर्टीज़ सेट करनी होती हैं:
- सेट करें सुरक्षा विकल्प SSLImplicit के लिए।
निम्नलिखित कोड स्निपेट दिखाता है कैसे
- उपयोगकर्ता नाम, पासवर्ड और पोर्ट सेट करें।
- सुरक्षा विकल्प सेट करें।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the ImapClient class
ImapClient client = new ImapClient("imap.domain.com", 993, "user@domain.com", "pwd");
// Set the security mode to implicit
client.setSecurityOptions(SecurityOptions.SSLImplicit);
प्रॉक्सी के माध्यम से सर्वर से कनेक्ट होना
प्रॉक्सी सर्वर सामान्यतः बाहरी दुनिया से संचार करने के लिए उपयोग किए जाते हैं। ऐसे मामलों में, मेल क्लाइंट इंटरनेट पर संचार करने के लिए प्रॉक्सी पता निर्दिष्ट किए बिना सक्षम नहीं होते। Aspose.Email SOCKS प्रॉक्सी प्रोटोकॉल के संस्करण 4, 4a और 5 का समर्थन प्रदान करता है। यह लेख प्रॉक्सी मेल सर्वर का उपयोग करके मेलबॉक्स तक पहुंचने का एक कार्यशील उदाहरण प्रदान करता है। प्रॉक्सी सर्वर के माध्यम से मेलबॉक्स तक पहुंचने के लिए:
- आरंभ करें SocksProxy आवश्यक जानकारी के साथ, अर्थात प्रॉक्सी पता, पोर्ट, और SOCKS संस्करण।
- आरंभ करें ImapClient होस्ट पता, उपयोगकर्ता नाम, पासवर्ड और अन्य सेटिंग्स के साथ।
- क्लाइंट सेट करें SocksProxy प्रॉपर्टी को SocksProxy ऊपर बनाया गया ऑब्जेक्ट।
निम्नलिखित कोड स्निपेट दिखाता है कि प्रॉक्सी सर्वर के माध्यम से मेलबॉक्स कैसे प्राप्त किया जाए।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Connect and log in to IMAP and set SecurityOptions
ImapClient client = new ImapClient("imap.domain.com", "username", "password");
client.setSecurityOptions(SecurityOptions.Auto);
String proxyAddress = "192.168.203.142"; // proxy address
int proxyPort = 1080; // proxy port
SocksProxy proxy = new SocksProxy(proxyAddress, proxyPort, SocksVersion.SocksV5);
// Set the proxy
client.setProxy(proxy);
try {
client.selectFolder("Inbox");
} catch (java.lang.RuntimeException ex) {
System.out.println(ex.getMessage());
}
HTTP प्रॉक्सी के माध्यम से सर्वर से कनेक्ट होना
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
HttpProxy proxy = new HttpProxy("18.222.124.59", 8080);
final ImapClient client = new ImapClient("imap.domain.com", "username", "password");
try {
client.setProxy(proxy);
client.selectFolder("Inbox");
} finally {
if (client != null)
client.dispose();
}
प्रमाणिकरण तंत्र को अनुकूलित करें
IMAP सर्वर द्वारा समर्थित प्रमाणीकरण तंत्रों की सूची पुनः प्राप्त करें, उपयोग करके getSupportedAuthentication विधि ImapClient क्लास। यह विधि क्लाइंट को यह निर्धारित करने की अनुमति देती है कि सर्वर के साथ सुरक्षित कनेक्शन स्थापित करने के लिए कौन‑से प्रमाणिकरण विधियां उपलब्ध हैं। फिर, इसका उपयोग करके setAllowedAuthentication विधि जो उपयोगकर्ता द्वारा अनुमत प्रमाणिकरण प्रकारों की एन्ह्यूमरेशन प्राप्त (या सेट) करती है, क्लाइंट‑सर्वर संचार के लिए सबसे उपयुक्त प्रमाणिकरण तंत्र चुनता है। यह आपको मेल क्लाइंट के लिए प्रमाणिकरण विधि स्पष्ट रूप से सेट करने की अनुमति देता है।
निम्नलिखित कोड नमूना दिखाता है कि कैसे ईमेल क्लाइंट प्रमाणिकरण को अनुकूलित किया जा सकता है:
imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.Plain);
पढ़ने-केवल मोड में सर्वर से कनेक्ट होना
यह ImapClient क्लास एक प्रदान करता है ReadOnly प्रॉपर्टी जो true पर सेट होने पर इंगित करती है कि मेलबॉक्स की स्थायी स्थिति में कोई परिवर्तन नहीं किया जाना चाहिए। निम्नलिखित कोड नमूना दर्शाता है उपयोग ImapClient.ReadOnly प्रॉपर्टी। यह न पढ़े गए संदेशों की गिनती प्राप्त करता है, फिर एक संदेश को फ़ेच करता है और फिर पढ़ने-केवल मोड में फिर से न पढ़े गए संदेशों की गिनती प्राप्त करता है। न पढ़े गए संदेशों की गिनती समान रहती है, जिससे पता चलता है कि मेलबॉक्स की स्थायी स्थिति नहीं बदली गई।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
ImapClient imapClient = new ImapClient();
imapClient.setHost("<HOST>");
imapClient.setPort(993);
imapClient.setUsername("<USERNAME>");
imapClient.setPassword("<PASSWORD>");
imapClient.setSupportedEncryption(EncryptionProtocols.Tls);
imapClient.setSecurityOptions(SecurityOptions.SSLImplicit);
ImapQueryBuilder imapQueryBuilder = new ImapQueryBuilder();
imapQueryBuilder.hasNoFlags(ImapMessageFlags.isRead()); /* get unread messages. */
MailQuery query = imapQueryBuilder.getQuery();
imapClient.setReadOnly(true);
imapClient.selectFolder("Inbox");
ImapMessageInfoCollection messageInfoCol = imapClient.listMessages(query);
System.out.println("Initial Unread Count: " + messageInfoCol.size());
if (messageInfoCol.size() > 0) {
imapClient.fetchMessage(messageInfoCol.get_Item(0).getSequenceNumber());
messageInfoCol = imapClient.listMessages(query);
// This count will be equal to the initial count
System.out.println("Updated Unread Count: " + messageInfoCol.size());
} else {
System.out.println("No unread messages found");
}
सर्वर से कनेक्ट करने के लिए CRAM-MD5 प्रमाणिकरण का उपयोग
IMAP सर्वर के साथ सुरक्षित प्रमाणीकरण और संचार सुनिश्चित करने के लिए, आप CRAM-MD5 को अनुमत प्रमाणीकरण विधि के रूप में निर्दिष्ट और लागू कर सकते हैं। निम्नलिखित कोड स्निपेट दिखाता है कि कैसे ImapClient:
imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.CramMD5);
ईमेल न भेजे मेल सर्वर क्रेडेंशियल्स की वैधता
कभी-कभी बिना ईमेल भेजे क्रेडेंशियल्स को सत्यापित करना आवश्यक होता है। Aspose.Email प्रदान करता है validateCredentials() विधि इस ऑपरेशन को करने के लिए। यदि सत्यापन सफल होता है, तो if स्टेटमेंट के अंदर का कोड निष्पादित होता है, आमतौर पर आगे की कार्रवाई या IMAP सर्वर से डेटा प्राप्त करने के लिए उपयोग किया जाता है। निम्नलिखित कोड स्निपेट दिखाता है कि बिना ईमेल भेजे क्रेडेंशियल्स का वैधता कैसे जाँचें।
try (ImapClient imapClient = new ImapClient(
server.ImapUrl, server.ImapPort, "username", "password", SecurityOptions.Auto)) {
imapClient.setTimeout(4000);
if (imapClient.validateCredentials()) {
// to do something
}
}
मेल ऑपरेशनों के लिए टाइमआउट सेट करने का तरीका
प्रत्येक मेल ऑपरेशन को कई कारकों (नेटवर्क देरी, डेटा आकार, सर्वर प्रदर्शन आदि) के आधार पर कुछ समय लगता है। आप सभी मेल ऑपरेशनों के लिए टाइमआउट सेट कर सकते हैं। नीचे दिया गया कोड उदाहरण दिखाता है कि इसे कैसे किया जाए उपयोग करके टाइमआउट प्रॉपर्टी। नोट: आपको बड़े मान सेट नहीं करने चाहिए ताकि आपके एप्लिकेशन में लंबी प्रतीक्षा न हो।
try (ImapClient imapClient = new ImapClient("host", 993, "username", "password", SecurityOptions.SSLImplicit))
{
imapClient.setTimeout(60000); // 60 seconds
// some code...
}
Greeting Timeout को सीमित करने का तरीका
IMAP क्लाइंट स्वचालित मोड का उपयोग करके कनेक्शन स्थापित कर सकता है। इस मोड में, IMAP क्लाइंट सभी संभावित कनेक्शन पैरामीटरों को आज़माता है जब तक कनेक्शन स्थापित न हो जाए। सही कनेक्शन की स्थिति में IMAP सर्वर क्लाइंट को एक अभिवादन स्ट्रिंग भेजता है। सर्वर इम्प्लिसिट या एक्सप्लिसिट (START TLS) SSL/TLS कनेक्शन इनिशिएशन का उपयोग कर सकते हैं। यदि कनेक्शन मोड मेल नहीं खाता (उदाहरण के लिए, सर्वर इम्प्लिसिट SSL कनेक्शन की प्रतीक्षा कर रहा है जबकि क्लाइंट अनसेक्योर या एक्सप्लिसिट SSL कनेक्शन स्थापित करने का प्रयास कर रहा है), तो सर्वर अभिवादन स्ट्रिंग नहीं भेजेगा और उपयोगकर्ता को बहुत देर तक इंतज़ार करना पड़ेगा जब तक टाइमआउट अभिवादन स्ट्रिंग नहीं भेजता, और क्लाइंट अगली कनेक्शन विकल्प पर जाता है। इस समस्या से बचने के लिए GreetingTimeout पेश किया गया है। यह प्रॉपर्टी अभिवादन स्ट्रिंग के लिए टाइमआउट सेट करने की अनुमति देती है, और स्वचालित कनेक्शन स्थापना का समय कम करती है।
ImapClient imapClient = new ImapClient();
imapClient.setGreetingTimeout(4000);