2009-08-28 8 views
6

मैं जावा मेल का उपयोग कर एक IMAP क्लाइंट पर काम कर रहा हूं। वर्तमान में हमें "वार्तालाप द्वारा समूह" सुविधा बनाने की आवश्यकता है जहां उपयोगकर्ता वार्तालाप के रूप में मेल देख सकता है (देखें कि जीमेल समूह कैसे मेल किए जाते हैं और अग्रेषित किए जाते हैं)क्या मैं एक IMAP मेल उत्तर ट्रैक कर सकता हूं?

मैं सर्वर से मेल पुनर्प्राप्त करने में सक्षम हूं, लेकिन इसमें मेल भागों मैं प्राप्त करता हूं, उत्तर मेल वास्तविक मेल के साथ "फ़्यूज्ड" है और वास्तविक मेल सामग्री की तरह व्यवहार किया जाता है।

जैसे: प्रारंभिक मेल:

<div>This is the initial mail.</div> 

मेल ने जवाब दिया:

This is the response Mail<br><br> 
<div class="gmail_quote"> 
On Wed, Aug 26, 2009 at 4:26 PM, [censored] 
<span dir="ltr">&lt; 
<a href="mailto:[censored]@[censored].com"> 
[censored]@[censored].com 
</a> 
&gt; 
</span> wrote:<br> 
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"> 
    <div>This is the initial mail.</div> 
    <div></div> 
</blockquote> 
</div> 
<br> 

के रूप में ऊपर दिखाए गए, क्या वास्तविक था और क्या मेल जवाब दिया गया था, कैसे तो यह संभव है का कोई संकेत नहीं है जीमेल की तरह एक समूह प्रदान करें (चाहे सर्वर से मेल कहाँ से पढ़ा जाता है)?

+1

एल्गोरिदम के लिए http://www.jwz.org/doc/threading.html देखें जो काम करता है और कुछ आंकड़े। –

उत्तर

8

आप संदेशों के कच्चे स्रोत आप निम्नलिखित हेडर को देखकर एक-दूसरे को संदेश से संबंधित कर सकते हैं मिलता है:

Message-ID: <[email protected]> 
References: <[email protected]> 
In-Reply-To: <[email protected]> 
+1

मैं अपने जीमेल बॉक्स में एक ही चीज़ देख रहा था; मुझे लगता है कि बातचीत के टूटने के बाद से यह कभी-कभी काम करता है। यह निश्चित रूप से इस उद्देश्य के लिए उपयोग करने का तरीका है। – Aif

+0

यह सही नहीं है क्योंकि केवल कुछ मेल क्लाइंट इन-उत्तर-इन सभी को नहीं डालते हैं, स्ट्रिंग कंटेंशन स्थिति को करने का सबसे अच्छा तरीका है। –

+0

IMAPMessage क्लास में वास्तव में getInReplyTo() विधि http://www.j2ee.me/products/javamail/javadocs/com/sun/mail/imap/IMAPMessage.html#getInReplyTo() यह देखते हुए कि मेरे पास है IMAPFolder ऑब्जेक्ट, मैं इसे IMAPMessage ऑब्जेक्ट्स को कैसे पुनर्प्राप्त करूं? यह: IMAPMessage [] संदेश = (IMAPMessage []) userFolder.getMessages(); यह करता है: अपवाद मिला: [Ljavax.mail.Message; java.lang.ClassCastException: [Ljavax.mail.Message; –

1

ट्रैक करके विषय केवल

Outlook और अन्य ईमेल के अधिकांश क्लाइंट केवल विषय पंक्तियों द्वारा समूहित करते हैं, उदाहरण के लिए वे विषय की शुरुआत से एफडब्लू: आरई: आदि को पट्टी करते हैं और बिना किसी संवेदनशीलता के उनकी तुलना करते हैं, और वे उन्हें एक ही समूह के रूप में चिह्नित करते हैं। अधिकतर उत्तर/आगे में लोग विषय बदलते नहीं हैं, और मुझे संदेह है कि कोई अन्य आसान तरीका है।

ऐसा करने का दूसरा तरीका है (बहुत महंगा), आपको एचटीएमएल सामग्री से शुद्ध टेक्स्ट निकालना होगा, और फिर पिछले कुछ दिनों में एक ही रसीद/प्रेषक ईमेल के लिए, आप यह पता लगा सकते हैं कि क्या पुराना ईमेल है शुद्ध टेक्स्ट सामग्री किसी भी नए ईमेल में मौजूद है और फिर उन्हें बातचीत के रूप में चिह्नित करें।

getInReply केवल संदेश आईडी लौटाता है, आपको प्रत्येक फ़ोल्डर से मैन्युअल रूप से प्रत्येक संदेश लोड करना होगा और सही संदेश आईडी मिलनी होगी, आपको अपना फ़ोल्डर IMAPFolder पर भी डालना होगा, क्या आपने ऐसा किया था?