2013-02-15 22 views
7

मैं IMAP खाते में प्रत्येक ईमेल के लिए एक अद्वितीय आईडी स्ट्रिंग की गणना कैसे कर सकता हूं?PHP में IMAP के साथ अद्वितीय ईमेल आईडी प्राप्त करना

मैं एक स्क्रिप्ट बना रहा हूं जो अक्सर सभी लापता मेलों को एक IMAP खाते से दूसरे में कॉपी करना होगा। मैं प्रत्येक अद्यतन पर डुप्लिकेट बनाने से बचना चाहता हूं, इसलिए मुझे यह पहचानना होगा कि एक खाते पर क्या है और दूसरे पर क्या है।

सभी ईमेलों में message_id नहीं है, और मैं नहीं देख सकता कि message_id और uid के बीच क्या अंतर है - क्या कोई मुझे बता सकता है?

ऐसा लगता है कि imap_append का उपयोग करते समय नहीं बदला जाता है - क्या कोई इसकी पुष्टि कर सकता है?

जब प्रत्येक ई-मेल सिर्फ संदेश आईडी, fx ईमेल शीर्षक और तारीख से कई अन्य विकल्प के लिए एक विशिष्ट आईडी स्ट्रिंग पैदा करने के लिए, लेकिन मैं नहीं जानता कि क्या लेने के लिए: मेरे हिसाब से http://www.php.net/manual/en/function.imap-headerinfo.php

+0

(''', 'दिनांक' और 'आकार') के विरुद्ध जांच अद्वितीय संयोजन दे सकती है। अफसोस की बात है कि PHP-IMAP के साथ काम करने वाले बहुत कम मैनुअल में उदाहरण अपडेट नहीं करते हैं। – SparKot

+0

क्या 'imap_uid()' वापसी 'message_id' है? 'Message_id' के बिना ईमेल के लिए यह क्या लौटाता है? – SparKot

+0

मुझे लगता है कि कुछ opperations पर uid परिवर्तन .... लेकिन मुझे यकीन नहीं है ... –

उत्तर

2

कुंजी: विशिष्ट आईडी इस प्रकार उत्पन्न किया जा सकता (दिनांक फ़ील्ड से) मेल के युग समय

लेकिन इसके साथ ही उपयोगकर्ता में एकाधिक मेल प्राप्त कर सकते हैं।

कुंजी: मेल के युग समय + MailSize + recieveing ​​सर्वर: मेल + MailSize

विशेष समय के युग समय एक रिसीवर आईडी एक ही आकार

कुंजी के विभिन्न मेल प्राप्त कर सकते हैं आईपी ​​(प्राप्तकर्ता से प्राप्त हो सकता है: फ़ील्ड)

विशेष रूप से एक रिसीवर आईडी उसी आकार के अलग-अलग मेल प्राप्त कर सकता है आईपी ​​भी

कुंजी: मेल का मेल समय + मेलसाइज + सर्वर आईसी प्राप्त करना (प्राप्त किया जा सकता है: फ़ील्ड) + एमडी 5 एसएम मेल।

इस कुंजी के लिए डुप्लिकेट की संभावना बहुत कम है।

संदेश आईडी आमतौर पर उस डिवाइस के लिए पहचानकर्ता है जिसने संदेश भेजा है या कुछ और हो सकता है, पूरी तरह से डोमेन पर निर्भर करता है और विभिन्न मेलों के लिए समान हो सकता है और संभवतः पूरी तरह मौजूद नहीं हो सकता है।

uid ऐसा कुछ है जिसके द्वारा imap सर्वर मेल पहचान को ट्रैक करता है। लेकिन यदि मेल के बीच में हटा दिया गया है या स्थानांतरित हो गया है और बग्गी सर्वर कोड का coz है, तो यह संभव है कि एक अलग मेल एक ही यूआईडी के साथ असाइन किया जा सके।

7

यूआईडी मेलबॉक्स के भीतर अद्वितीय है, लेकिन मेलबॉक्स के बीच मैप नहीं करता है, इसलिए मेलबॉक्स के बीच ईमेल मिलान करने के लिए कोई उपयोग नहीं है।

message_id सभी ईमेल के लिए वैश्विक रूप से अद्वितीय होने का इरादा है और भेजने वाले ईमेल सर्वर द्वारा उत्पन्न किया गया है। यदि सर्वर सही तरीके से कॉन्फ़िगर किया गया है, तो जो संदेश भेजता है, उसके पास एक संदेश_आईडी होगा, और इसका उपयोग मेलबॉक्स में ईमेल से मेल खाने के लिए किया जा सकता है। हालांकि, बुरी तरह से कॉन्फ़िगर किए गए सर्वर संदेश_आईडी असाइन नहीं कर सकते हैं।इस मामले में, प्रेषक की एक हैश & udate हमेशा मेरे लिए अद्वितीय साबित हुई है - अगर ईमेल एक ही व्यक्ति से उसी माइक्रोक्रॉन्ड में आया, तो यह वही संदेश होगा। नोट - प्रेषक से आसानी से स्पूफ किया जा सकता है - से प्रेषक का उपयोग करें।

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