सर्वर से संदेशों के साथ काम करना
मेलबॉक्स जानकारी प्राप्त करना
हम मेलबॉक्स की जानकारी जैसे संदेशों की संख्या और मेलबॉक्स का आकार उपयोग करके प्राप्त कर सकते हैं getMailBoxSize और getMailBoxInfo के मेथड्स Pop3Client क्लास।
- यह getMailBoxSize मेथड बाइट्स में मेलबॉक्स का आकार लौटाता है।
- यह getMailBoxInfo मेथड एक प्रकार का ऑब्जेक्ट लौटाता है Pop3MailBoxInfo.
संदेशों की संख्या प्राप्त करने के लिये यह भी संभव है कि उपयोग किया जाए MessageCount प्रॉपर्टी और आकार का उपयोग करके OccupiedSize की प्रॉपर्टी Pop3MailBoxInfo क्लास। निम्नलिखित सैंपल कोड दिखाता है कि कैसे मेलबॉक्स की जानकारी प्राप्त की जाए। यह दिखाता है कैसे:
- एक बनाएं Pop3Client.
- POP3 सर्वर से कनेक्ट करें।
- मेलबॉक्स का आकार प्राप्त करें।
- मेलबॉक्स जानकारी प्राप्त करें।
- मेलबॉक्स में संदेशों की संख्या प्राप्त करें।
- अधिकार लिया हुआ आकार प्राप्त करें।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
Pop3Client client = new Pop3Client();
// Specify host, username, password, Port and SecurityOptions for your client
client.setHost("pop.gmail.com");
client.setUsername("your.username@gmail.com");
client.setPassword("your.password");
client.setPort(995);
client.setSecurityOptions(SecurityOptions.Auto);
// Get the size of the mailbox, Get mailbox info, number of messages in the mailbox
long nSize = client.getMailboxSize();
System.out.println("Mailbox size is " + nSize + " bytes.");
Pop3MailboxInfo info = client.getMailboxInfo();
int nMessageCount = info.getMessageCount();
System.out.println("Number of messages in mailbox are " + nMessageCount);
long nOccupiedSize = info.getOccupiedSize();
System.out.println("Occupied size is " + nOccupiedSize);
मेलबॉक्स में ईमेल गिनती प्राप्त करना
निम्नलिखित कोड स्निपेट दिखाता है कि कैसे मेलबॉक्स में ईमेल संदेशों की गिनती की जाए।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
Pop3Client client = new Pop3Client("pop3.server.com", "username", "password");
try {
client.setSecurityOptions(SecurityOptions.Auto);
int i = client.getMessageCount();
System.out.println("Message count: " + i);
} catch (Pop3Exception ex) {
System.out.println("Error:" + ex.toString());
}
Aspose.Email डेवलपर्स को ईमेल के साथ कई विभिन्न तरीकों से काम करने की अनुमति देता है। उदाहरण के लिए, वे ईमेल डाउनलोड करने का निर्णय लेने से पहले हेडर जानकारी प्राप्त कर सकते हैं। या वे सर्वर से ईमेल प्राप्त करके बिना पार्स किए (तेज़) या पार्स करने के बाद (धीमा) सहेज सकते हैं। यह लेख दिखाता है कि कैसे ईमेल प्राप्त और परिवर्तित किए जाएँ।
ईमेल हेडर जानकारी प्राप्त करना
ईमेल हेडर हमें ईमेल संदेश के बारे में जानकारी दे सकते हैं जिसे हम पूरे ईमेल संदेश को प्राप्त करने का निर्णय लेने के लिए उपयोग कर सकते हैं। सामान्यतः, हेडर जानकारी में प्रेषक, विषय, प्राप्त तिथि आदि शामिल होते हैं। (ईमेल हेडर का विस्तृत वर्णन … में किया गया है ईमेल हेडर को अनुकूलित करना. यह विषय विशेष रूप से SMTP के साथ ईमेल भेजने के बारे में है, लेकिन ईमेल हेडर सामग्री की जानकारी POP3 ईमेल के लिए भी मान्य रहती है). निम्नलिखित उदाहरण दिखाते हैं कि कैसे POP3 सर्वर से संदेश क्रमांक द्वारा ईमेल हेडर प्राप्त किए जा सकते हैं।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the Pop3Client class
Pop3Client client = new Pop3Client();
// Specify host, username. password, Port and SecurityOptions for your client
client.setHost("pop.gmail.com");
client.setUsername("your.username@gmail.com");
client.setPassword("your.password");
client.setPort(995);
client.setSecurityOptions(SecurityOptions.Auto);
try {
HeaderCollection headers = client.getMessageHeaders(1);
for (int i = 0; i < headers.size(); i++) {
// Display key and value in the header collection
System.out.print(headers.getKey(i));
System.out.print(" : ");
System.out.println(headers.get(i));
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
} finally {
client.dispose();
}
ईमेल संदेश प्राप्त करना
यह Pop3Client क्लास घटक POP3 सर्वर से ईमेल संदेश प्राप्त करने और उन्हें एक में पार्स करने की क्षमता प्रदान करता है MailMessage इंस्टेंस की मदद से MailMessage घटक। यह MailMessage क्लास में ईमेल कंटेंट को बदलने के लिए कई प्रॉपर्टी और मेथड्स होते हैं। उपयोग करके fetchMessage विधि Pop3Client क्लास, आप एक प्राप्त कर सकते हैं MailMessage इंस्टेंस को सीधे POP3 सर्वर से। निम्नलिखित कोड स्निपेट दिखाता है कि POP3 सर्वर से पूर्ण ईमेल संदेश कैसे प्राप्त करें।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the Pop3Client class
Pop3Client client = new Pop3Client();
// Specify host, username, password, Port and SecurityOptions for your client
client.setHost("pop.gmail.com");
client.setUsername("your.username@gmail.com");
client.setPassword("your.password");
client.setPort(995);
client.setSecurityOptions(SecurityOptions.Auto);
try {
int messageCount = client.getMessageCount();
// Create an instance of the MailMessage class and Retrieve message
MailMessage message;
for (int i = 1; i <= messageCount; i++) {
message = client.fetchMessage(i);
System.out.println("From:" + message.getFrom());
System.out.println("Subject:" + message.getSubject());
System.out.println(message.getHtmlBody());
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
} finally {
client.dispose();
}
यूनिक आईडी का उपयोग करके संदेश सारांश जानकारी प्राप्त करना
API का POP3 क्लाइंट सर्वर से संदेश सारांश जानकारी को संदेश के यूनिक आईडी का उपयोग करके पुनः प्राप्त कर सकता है। यह संदेश की संक्षिप्त जानकारी तक तेज़ पहुँच प्रदान करता है बिना पूरे संदेश को सर्वर से पहले प्राप्त किए। निम्नलिखित कोड स्निपेट दर्शाता है कि कैसे संदेश सारांश जानकारी प्राप्त करें।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
String uniqueId = "unique id of a message from server";
Pop3Client client = new Pop3Client("host.domain.com", 456, "username", "password");
client.setSecurityOptions(SecurityOptions.Auto);
Pop3MessageInfo messageInfo = client.getMessageInfo(uniqueId);
if (messageInfo != null) {
System.out.println(messageInfo.getSubject());
System.out.println(messageInfo.getDate());
}
मल्टीकनेक्शन के साथ संदेशों को सूचीबद्ध करना
Pop3Client एक प्रदान करता है UseMultiConnection प्रॉपर्टी जिसका उपयोग भारी ऑपरेशनों के लिए कई कनेक्शन बनाने में किया जा सकता है। आप मल्टीकनेक्शन मोड में उपयोग किए जाने वाले कनेक्शन की संख्या सेट भी कर सकते हैं, इसके लिए Pop3Client.ConnectionsQuantity. निम्नलिखित कोड स्निपेट मल्टीकनेक्शन मोड का उपयोग करके संदेशों को सूचीबद्ध करने को प्रदर्शित करता है और इसकी प्रदर्शन की तुलना सिंगल कनेक्शन मोड से करता है।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the Pop3Client class
Pop3Client pop3Client = new Pop3Client();
pop3Client.setHost("<HOST>");
pop3Client.setPort(995);
pop3Client.setUsername("<USERNAME>");
pop3Client.setPassword("<PASSWORD>");
pop3Client.setConnectionsQuantity(5);
pop3Client.setUseMultiConnection(MultiConnectionMode.Enable);
long multiConnectionModeStartTime = System.currentTimeMillis();
Pop3MessageInfoCollection messageInfoCol1 = pop3Client.listMessages();
long multiConnectionModeTimeSpan = System.currentTimeMillis() - multiConnectionModeStartTime;
pop3Client.setUseMultiConnection(MultiConnectionMode.Disable);
long singleConnectionModeStartTime = System.currentTimeMillis();
Pop3MessageInfoCollection messageInfoCol2 = pop3Client.listMessages();
long singleConnectionModeTimeSpan = System.currentTimeMillis() - singleConnectionModeStartTime;
System.out.println("multyConnectionModeTimeSpan: " + multiConnectionModeTimeSpan);
System.out.println("singleConnectionModeTimeSpan: " + singleConnectionModeTimeSpan);
double performanceRelation = singleConnectionModeTimeSpan / multiConnectionModeTimeSpan;
System.out.println("Performance Relation: " + performanceRelation);
सर्वर से संदेश प्राप्त करना और डिस्क पर सहेजना
पार्स किए बिना डिस्क पर संदेश सहेजें
यदि आप POP3 सर्वर से ईमेल संदेशों को बिना पार्स किए डाउनलोड करना चाहते हैं, तो उपयोग करें Pop3Client क्लास saveMessage फ़ंक्शन। saveMessage फ़ंक्शन ईमेल संदेश को पार्स नहीं करता इसलिए यह … से तेज़ है fetchMessage फ़ंक्शन। निम्नलिखित कोड स्निपेट दिखाता है कि कैसे क्रम संख्या द्वारा संदेश सहेजा जाए, इस केस में संख्या 1। saveMessage मेथड संदेश को मूल EML फ़ॉर्मेट में बिना पार्स किए सहेजता है।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "pop3/";
String dstEmail = dataDir + "InsertHeaders.eml";
// Create an instance of the Pop3Client class
Pop3Client client = new Pop3Client();
// Specify host, username, password, Port and SecurityOptions for your client
client.setHost("pop.gmail.com");
client.setUsername("your.username@gmail.com");
client.setPassword("your.password");
client.setPort(995);
client.setSecurityOptions(SecurityOptions.Auto);
try {
// Save message to disk by message sequence number
client.saveMessage(1, dstEmail);
client.dispose();
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
System.out.println("Retrieved email messages using POP3 ");
सहेजने से पहले संदेश पार्स करें
निम्नलिखित कोड स्निपेट … का उपयोग करता है Pop3Client fetchMessage मेथड जो POP3 सर्वर से उसके क्रम संख्या द्वारा संदेश प्राप्त करता है, फिर विषय को फ़ाइल नाम के रूप में उपयोग करके संदेश को डिस्क पर सहेजता है।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "pop3/";
// Create an instance of the Pop3Client class
Pop3Client client = new Pop3Client();
// Specify host, username and password, Port and SecurityOptions for your client
client.setHost("pop.gmail.com");
client.setUsername("your.username@gmail.com");
client.setPassword("your.password");
client.setPort(995);
client.setSecurityOptions(SecurityOptions.Auto);
try {
// Fetch the message by its sequence number and Save the message using its subject as the file name
MailMessage msg = client.fetchMessage(1);
msg.save(dataDir + "first-message_out.eml", SaveOptions.getDefaultEml());
client.dispose();
} catch (Exception ex) {
System.out.println(ex.getMessage());
} finally {
client.dispose();
}
समूह रूप में संदेश प्राप्त करना
Pop3Client एक प्रदान करता है fetchMessages मेथड जो क्रम संख्या या यूनिक आईडी के iterable को स्वीकार करता है और एक सूची लौटाता है MailMessage. निम्नलिखित कोड स्निपेट … के उपयोग को दर्शाता है fetchMessages मेथड जो क्रम संख्या और यूनिक आईडी द्वारा संदेश प्राप्त करता है।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the Pop3Client class
Pop3Client pop3Client = new Pop3Client();
pop3Client.setHost("<HOST>");
pop3Client.setPort(995);
pop3Client.setUsername("<USERNAME>");
pop3Client.setPassword("<PASSWORD>");
Pop3MessageInfoCollection messageInfoCol = pop3Client.listMessages();
System.out.println("ListMessages Count: " + messageInfoCol.size());
List<Integer> sequenceNumberAr = new ArrayList<Integer>();
List<String> uniqueIdAr = new ArrayList<String>();
for (Pop3MessageInfo mi : messageInfoCol) {
sequenceNumberAr.add(mi.getSequenceNumber());
uniqueIdAr.add(mi.getUniqueId());
}
for (MailMessage m : pop3Client.fetchMessagesBySequences(sequenceNumberAr)) {
System.out.println("FetchMessages-sequenceNumberAr : " + m.getSubject());
}
for (MailMessage m : pop3Client.fetchMessagesByUids(uniqueIdAr)) {
System.out.println("FetchMessages-uniqueIdAr : " + m.getSubject());
}
प्रेषक, प्राप्तकर्ता या तिथि के आधार पर संदेश फ़िल्टर करना
यह Pop3Client क्लास, जिसमें वर्णन किया गया है POP3 सर्वर से कनेक्ट होना, प्रदान करता है listMessages मेथड जो मेलबॉक्स से सभी संदेश प्राप्त करता है। केवल उन संदेशों को प्राप्त करने के लिये जो किसी शर्त से मेल खाते हैं, अतिव्याप्त का उपयोग करें listMessages मेथड जो लेता है MailQuery को आर्ग्यूमेंट के रूप में। MailQuery क्लास विभिन्न प्रॉपर्टीज़ प्रदान करती है जिससे क्वेरी शर्तें निर्दिष्ट की जा सकती हैं, जैसे तिथि, विषय, प्रेषक, प्राप्तकर्ता आदि। MailQueryBuilder क्लास का उपयोग खोज अभिव्यक्ति बनाने के लिए किया जाता है। पहले सभी शर्तें और प्रतिबंध सेट किए जाते हैं और फिर MailQuery को द्वारा विकसित क्वेरी से भरा गया है MailQueryBuilder. यह MailQuery क्लास ऑब्जेक्ट द्वारा उपयोग किया जाता है Pop3Client सर्वर से फ़िल्टर की गई जानकारी निकालने के लिये। यह लेख दिखाता है कि कैसे मेलबॉक्स से ईमेल संदेश फ़िल्टर किए जाएँ। पहला उदाहरण दर्शाता है कि कैसे तिथि और विषय के आधार पर संदेश फ़िल्टर किए जाएँ। हम अन्य मानदंडों पर फ़िल्टर करने और अधिक जटिल क्वेरी बनाने का भी प्रदर्शन करते हैं। यह डेट और टाइम फ़िल्टर के उपयोग को दिखाता है ताकि मेलबॉक्स से विशिष्ट ईमेल प्राप्त किया जा सके। इसके अतिरिक्त, यह केस-सेंसिटिव फ़िल्टरिंग लागू करने का तरीका भी दर्शाता है।
मेलबॉक्स से संदेश फ़िल्टर करना
मेलबॉक्स से संदेशों को फ़िल्टर करने के लिए:
- POP3 सर्वर से कनेक्ट करें और लॉगिन करें.
- का एक इंस्टेंस बनाएं MailQuery और वांछित प्रॉपर्टीज़ सेट करें।
- कॉल करें Pop3Client.listMessages(MailQuery query) विधि और पास करें MailQuery के पैरामीटर में केवल फ़िल्टर किए गए संदेश प्राप्त करने के लिए।
निम्नलिखित कोड स्निपेट दिखाता है कि कैसे POP3 मेलबॉक्स से कनेक्ट करें और उन संदेशों को प्राप्त करें जो आज आए हैं और विषय में "newsletter" शब्द है।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Connect and log in to POP3
String host = "host";
int port = 110;
String username = "user@host.com";
String password = "password";
Pop3Client client = new Pop3Client(host, port, username, password);
// Set conditions, Subject contains "Newsletter", Emails that arrived today
MailQueryBuilder builder = new MailQueryBuilder();
builder.getSubject().contains("Newsletter");
builder.getInternalDate().on(new Date());
// Build the query and Get list of messages
MailQuery query = builder.getQuery();
Pop3MessageInfoCollection messages = client.listMessages(query);
System.out.println("Pop3: " + messages.size() + " message(s) found.");
विशिष्ट मानदंडों को पूरा करने वाले संदेश प्राप्त करना
ऊपर के कोड नमूने ईमेल विषय और तिथि के आधार पर संदेशों को फ़िल्टर करता है। हम अन्य प्रॉपर्टीज़ का उपयोग करके अन्य समर्थित शर्तें भी सेट कर सकते हैं। नीचे कुछ उदाहरण दिए गए हैं जो शर्तों को सेट करने में … का उपयोग करके MailQuery.
निम्नलिखित कोड स्निपेट्स दिखाते हैं कि कैसे अन्य मानदंडों पर ईमेल फ़िल्टर किए जाएँ:
- आज वितरित हुए ईमेल खोजें।
- एक सीमा के भीतर प्राप्त हुए ईमेल खोजें।
- किसी विशिष्ट प्रेषक के ईमेल खोजें।
- किसी विशिष्ट डोमैन् से भेजे गए ईमेल खोजें।
- किसी विशिष्ट प्राप्तकर्ता को भेजे गए ईमेल खोजें।
आज की तिथि
निम्नलिखित कोड स्निपेट दिखाता है कि कैसे आज वितरित हुए ईमेल खोजे जाएँ।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Emails that arrived today
MailQueryBuilder builder = new MailQueryBuilder();
builder.getInternalDate().on(new Date());
तारीख सीमा
निम्नलिखित कोड स्निपेट दिखाता है कि कैसे एक सीमा के भीतर प्राप्त हुए ईमेल खोजे जाएँ।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Emails that arrived in last 7 days
Calendar calendar = Calendar.getInstance();
builder.getInternalDate().before(calendar.getTime());
calendar.add(Calendar.DATE, -7);
builder.getInternalDate().since(calendar.getTime());
विशिष्ट प्रेषक
निम्नलिखित कोड स्निपेट दिखाता है कि कैसे किसी विशिष्ट प्रेषक के ईमेल खोजे जाएँ।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Get emails from specific sender
builder.getFrom().contains("saqib.razzaq@127.0.0.1");
विशिष्ट डोमैन्
निम्नलिखित कोड स्निपेट दिखाता है कि कैसे किसी विशिष्ट डोमैन् से भेजे गए ईमेल खोजे जाएँ।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Get emails from specific domain
builder.getFrom().contains("SpecificHost.com");
विशिष्ट प्राप्तकर्ता
निम्नलिखित कोड स्निपेट दिखाता है कि कैसे किसी विशिष्ट प्राप्तकर्ता को भेजे गए ईमेल खोजे जाएँ।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Get emails sent to specific recipient
builder.getTo().contains("recipient");
जटिल क्वेरियों का निर्माण
यदि विभिन्न MailQueryBuilder प्रॉपर्टीज़ अलग-अलग कथनों में सेट की गई हैं, तब सभी शर्तें मेल खाएँगी। उदाहरण के लिए, यदि हम एक तिथि सीमा और एक विशिष्ट होस्ट से संदेश प्राप्त करना चाहते हैं, तो हमें तीन कथन लिखने होंगे।
AND के साथ क्वेरीज़ को संयोजित करना
निम्नलिखित कोड स्निपेट दिखाता है कि कैसे AND के साथ क्वेरीज़ को संयोजित किया जाए।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Emails from specific host, get all emails that arrived before today and all emails that arrived since 7 days ago
builder.getFrom().contains("SpecificHost.com");
Calendar calendar = Calendar.getInstance();
builder.getInternalDate().before(calendar.getTime());
calendar.add(Calendar.DATE, -7);
builder.getInternalDate().since(calendar.getTime());
OR के साथ क्वेरीज़ को संयोजित करना
MailQueryBuilder प्रदान करता है या मेथड जो दो लेता है MailQuery इंस्टेंस को पैरामीटर के रूप में। यह उन संदेशों को प्राप्त करता है जो निर्दिष्ट दो शर्तों में से किसी एक से मेल खाते हैं। निम्नलिखित कोड स्निपेट दिखाता है कि कैसे उन संदेशों को फ़िल्टर करें जिनके विषय में "test" है या प्रेषक "noreply@host.com" है। नीचे दिया गया कोड स्निपेट दिखाता है कि कैसे OR के साथ क्वेरीज़ को संयोजित किया जाए।
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Specify OR condition
builder.or(builder.getSubject().contains("test"), builder.getFrom().contains("noreply@host.com"));
केस-सेंसिटिव फ़िल्टर लागू करना
API मेलबॉक्स से ईमेल को केस-सेंसिटिव मानदंड के आधार पर फ़िल्टर करने की क्षमता भी प्रदान करता है। निम्नलिखित मेथड्स केस-सेंसिटिव फ़्लैग निर्दिष्ट करके ईमेल खोजने की क्षमता प्रदान करते हैं।
- विधि StringComparisonField.contains(String value, boolean ignoreCase)
- विधि StringComparisonField.equals(String value, boolean ignoreCase)
- विधि StringComparisonField.notContains(String boolean, bool ignoreCase)
- विधि StringComparisonField.notEquals(String boolean, bool ignoreCase)
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// IgnoreCase is True
MailQueryBuilder builder1 = new MailQueryBuilder();
builder1.getFrom().contains("tesT", true);
MailQuery query1 = builder1.getQuery();
Pop3MessageInfoCollection messageInfoCol1 = client.listMessages(query1);