2010-12-08 15 views
10

क्या जावामेल सर्वर-पुश के माध्यम से नए ईमेल की अधिसूचना अधिसूचना करता है?क्या जावामेल समर्थन सर्वर-पुश करता है?

यदि हां, तो इसके लिए प्रलेखन कहां है? यदि नहीं, तो क्या कोई पुस्तकालय है जो इसे कर सकता है?

उत्तर

10

आप IMAPFolder के idle समारोह का उपयोग कर सर्वर से निष्क्रिय आदेश जारी करने का होना चाहिए। फिर वह घटनाओं, जैसे कि एक नया मेल या हटाए गए मेल के लिए सुनेंगे। (यह देखने के लिए IMAP spec देखें कि संदेश कैसा दिखता है)। और जब मेलबॉक्स में कई ईमेल बदलते हैं तो आपको कोड निष्पादित करने के लिए MessageCountListener का उपयोग करना चाहिए।

आईएमएपी का निष्क्रिय कार्य बिल्कुल "पुश" कार्यक्षमता की नकल करने के लिए है।

http://java.sun.com/products/javamail/javadocs/javax/mail/event/MessageCountListener.html
http://java.sun.com/products/javamail/javadocs/com/sun/mail/imap/IMAPFolder.html

खेद है कि मैं किसी भी कोड से पता चलता है कि यह कैसे किया जाता है पोस्ट नहीं किया था। मैं अपना समय बर्बाद नहीं करना चाहता था क्योंकि यदि आप इस सामान की खोज करते हैं तो इंटरनेट पर कई आसानी से उपलब्ध उदाहरण हैं।

लेकिन सावधान रहें, यह विधि निष्क्रिय कमांड ब्लॉक के बाद से एक से अधिक IMAP खाते के लिए काम नहीं करेगी। जब तक आप उन्हें सभी अलग-अलग धागे (बुरा विचार) पर नहीं चाहते हैं।

+0

तो, अगर मेरे पास 3 आईमैप सर्वर के लिए 3 स्टोर ऑब्जेक्ट्स हैं, तो मैं सर्वर पुश का उपयोग नहीं कर सकता? यह दुखद है :-( – Timo

+0

आप कर सकते हैं। आपके पास दो विकल्प हैं। मुझे नहीं पता था कि आप कितने आईएमएपी कनेक्शन के बारे में बात कर रहे थे, यही कारण है कि मैंने धागे की सिफारिश नहीं की थी। लेकिन अगर आप केवल तीन चाहते हैं तो सबसे आसान तरीका करना है ठीक है, केवल तीन धागे कुछ भी नहीं है। प्रति IMAP स्टोर पर एक थ्रेड बनाएं और 'idle' कमांड जारी करें।' idle' कमांड से पहले 'MessageCountListener' ऑब्जेक्ट को असाइन करना सुनिश्चित करें, फिर' idle'। प्रत्येक थ्रेड होगा फिर अपने प्रत्येक तीन खातों को संभालें। दूसरा और जटिल विकल्प में आपके सॉकेट को मैन्युअल रूप से प्रबंधित करना शामिल है, जिसमें उन्हें पढ़ने और लिखना शामिल है। – casey

+2

संख्या "3" केवल एक यादृच्छिक संख्या थी जो मुझे समझाने के लिए यादृच्छिक संख्या थी। वास्तव में मेरे कार्यक्रम को हजारों आईएमएपी कनेक्शन एक साथ सौदा करें। मुझे लगता है कि थ्रेडिंग यहां कोई अच्छा विचार नहीं है। – Timo

1

एक स्टोर घटना अपने बैकएंड दुकान द्वारा जारी अधिसूचना के लिए सुनता है:

http://java.sun.com/products/javamail/javadocs/javax/mail/event/StoreEvent.html

लेकिन मेरे अनुभव में जावा मेल डॉक्स तो हैं स्थानों में पतली, कि यह जानने का सबसे अच्छा तरीका क्या है चल रहा है, प्रक्रिया के माध्यम से खुद को डीबग करना है।

यह एक महान परिवेश संसाधन भी है; JavaMail पूछे जाने वाले प्रश्न:

http://www.oracle.com/technetwork/java/faq-135477.html

+0

एचएम, सर्वर पुश के बारे में अक्सर पूछे जाने वाले प्रश्नों में कुछ भी नहीं है:/ – Timo

+0

मैंने सोचा था कि आप मेल-आगमन पर अपने सर्वर से भेजे गए अधिसूचनाओं को सुनने के लिए जावा मेल का कुछ तरीका चाहते थे। क्षमा करें अगर मैं गलत समझा! – davek

+0

दरअसल, यह वही है जो मैं ढूंढ रहा था। StoreEvent पर संकेत के लिए बहुत बहुत धन्यवाद। स्टोर क्लास में एडस्टोर लिस्टनर (स्टोर लिस्टनर एल) नामक एक विधि है जिसका उपयोग स्टोरएवेंट को पकड़ने के लिए श्रोता को पंजीकृत करने के लिए किया जा सकता है। जावामेल FAQ हालांकि इसके बारे में कुछ भी नहीं कहता है। – Timo

संबंधित मुद्दे