POP3 सर्वर पर नए ईमेल संदेशों का पता लगाना

POP3 खातों के साथ, आप डाउनलोड और पढ़ते समय संदेशों को सर्वर पर रख सकते हैं। ईमेल को सर्वर पर रहने देने का मतलब है कि वे अन्य अनुप्रयोगों और व्यक्तियों के लिए उपलब्ध होते हैं, उदाहरण के लिए, वे उपयोगकर्ता जो अपने ईमेल को कई उपकरणों से एक्सेस करते हैं। या आप केवल उन संदेशों को डाउनलोड करना चाह सकते हैं जो कुछ विशेष मानदंडों को पूरा करते हैं, उदाहरण के लिए, किसी विशेष विषय पंक्ति वाले संदेश। ईमेल प्रबंधन के लिए आप कर सकते हैं;

  • Aspose.Email का उपयोग करके POP3 मेल सर्वर से सभी संदेश पढ़ें।
  • संदेशों को अपने स्थानीय डेटाबेस में डाउनलोड करें।

संदेश हटा नहीं जाते बल्कि सर्वर पर बने रहते हैं। पहली बार चलाने पर यह प्रक्रिया ठीक काम करती है। सभी आवश्यक संदेश डेटाबेस में डाउनलोड हो जाते हैं। लेकिन दूसरी बार चलाने पर वही संदेश फिर से डाउनलोड हो जाते हैं क्योंकि वे अभी भी ईमेल सर्वर पर मौजूद हैं। इससे दोहराए गए रिकॉर्ड बनते हैं। इस समस्या को हल करने के लिए, उपयोग करें Pop3MessageInfo.UniqueID संपत्ति यह जांचने के लिए कि कोई संदेश पहले से डाउनलोड किया गया है या नहीं। संदेश का यूनिक आईडी डेटाबेस में संग्रहीत होना चाहिए: यह नए संदेशों का पता लगाने की खोज कुंजी है।

नए संदेशों का पता लगाना

POP3 सर्वर पर ईमेल की सूची में से नए ईमेल पहचानने के लिए:

  1. सर्वर से कनेक्ट करें।
  2. ईमेल की सूची प्राप्त करें।
  3. डेटाबेस से कनेक्ट करें।
  4. ईमेल की सूची प्राप्त करें।
  5. सूचियों की तुलना करें।
  6. नए ईमेल को डेटाबेस में सहेजें।

प्रक्रिया तेज़ होती है जब आप:

  1. सभी संदेशों के यूनिक आईडी को हैश टेबल में प्राप्त करें।
  2. for(…) लूप में प्रत्येक ईमेल संदेश के लिए डेटाबेस की बजाय हैश टेबल में खोजें।

प्रत्येक संदेश के लिए डेटाबेस क्वेरी करने के बजाय, जो कई डेटाबेस कॉल्स की आवश्यकता होती है, यह मेथड केवल एक कॉल की आवश्यकता रखता है। नीचे दिया गया कोड स्निपेट दिखाता है कि POP3 सर्वर पर नए ईमेल संदेशों का पता कैसे लगाया जाए।

public static void run() {
    try {
        // Connect to the POP3 mail server and check messages.
        Pop3Client pop3Client = new Pop3Client("pop.domain.com", 993, "username", "password");

        // List all the messages
        Pop3MessageInfoCollection msgList = pop3Client.listMessages();
        for (Pop3MessageInfo msgInfo : msgList) {
            // Get the POP3 message's unique ID
            String strUniqueID = msgInfo.getUniqueId();

            // Search your local database or data store on the unique ID. If a match is found, that means it's already downloaded. Otherwise download and save it.
            if (searchPop3MsgInLocalDB(strUniqueID) == true) {
                // The message is already in the database. Nothing to do with this message. Go to next message.
            } else {
                // Save the message
                savePop3MsgInLocalDB(msgInfo);
            }
        }
    } catch (Exception ex) {
        System.err.println(ex);
    }

}

private static void savePop3MsgInLocalDB(Pop3MessageInfo msgInfo) {
    // Open the database connection according to your database. Use public properties (for example msgInfo.Subject) and store in database,
    // for example, " INSERT INTO POP3Mails (UniqueID, Subject) VALUES ('" + msgInfo.UniqueID + "' , '" + msgInfo.Subject + "') and Run the query to store in database.
}

private static boolean searchPop3MsgInLocalDB(String strUniqueID) {
    // Open the database connection according to your database. Use strUniqueID in the search query to find existing records,
    // for example, " SELECT COUNT(*) FROM POP3Mails WHERE UniqueID = '" + strUniqueID + "' Run the query, return true if count == 1. Return false if count == 0.
    return false;
}