2009-04-21 9 views
6

मैं एमएस एक्सचेंज पर चल रहे फ़ोल्डर में आईएमएपी के माध्यम से ड्राफ्ट ई-मेल स्टोर करने का प्रयास करता हूं। सब कुछ ठीक है, सिवाय इसके कि बीसीसी प्राप्तकर्ता सर्वर पर संग्रहीत मसौदे संदेश में नहीं दिखाए जाते हैं। यदि मैं इसे एमएस आउटलुक के साथ भेजता हूं तो बीसीसी प्राप्तकर्ताओं को भी ईमेल प्राप्त नहीं होता है। अगर मैंने इसे सर्वर पर संग्रहीत करने के बाद पाइथन के साथ संदेश वापस पढ़ा है, तो मैं मसौदे में बीसीसी देख सकता हूं।पायथन: बीसीसी प्राप्तकर्ताओं के साथ ड्राफ्ट ईमेल को IMAP के माध्यम से एक्सचेंज सर्वर में कैसे स्टोर करें?

import imaplib 
import time 
from email.MIMEMultipart import MIMEMultipart 
from email.MIMEText import MIMEText 

message = MIMEMultipart() 
message['Subject'] = 'Test Draft' 
message['From'] = '[email protected]' 
message['to'] = '[email protected]' 
message['cc'] = '[email protected]' 
message['bcc'] = '[email protected]' 
message.attach(MIMEText('This is a test.\n')) 

server= imaplib.IMAP4('the.ser.ver.ip') 
server.login('test', 'test') 
server.append("Drafts" 
       ,'\Draft' 
       ,imaplib.Time2Internaldate(time.time()) 
       ,str(message)) 
server.logout() 

अगर मैं इस कोड को चलाने के लिए, एक मसौदा Exchange सर्वर पर Draft फ़ोल्डर में संग्रहीत हो जाता है:

निम्नलिखित पायथन कोड इस व्यवहार reproduces। लेकिन अगर मैं एमएस आउटलुक के साथ मसौदे को देखता हूं, इसमें bcc प्राप्तकर्ता (message['bcc'] = '[email protected]') शामिल नहीं है। Message, to, from, cc ठीक है, कोई त्रुटि नहीं।

यदि मैं ड्राफ्ट डाउनलोड करता हूं जिसमें पहले से ही एक एक्सचेंज फ़ोल्डर से बीसीसी शामिल है, तो मैं बीसीसी भी देख सकता हूं। केवल अपलोड करना मेरे लिए काम नहीं करता है।

किसी भी मदद की बहुत सराहना की। धन्यवाद। बीटीडब्ल्यू, एमएपीआई एक विकल्प नहीं है।

अद्यतन: धन्यवाद। X-Receiver मेरे लिए काम नहीं किया। आउटलुक में एक IMAP- फ़ोल्डर के साथ खेलने के लिए, मुझे एक दिलचस्प परिणाम मिला। यदि मैं Outlook में IMAP- फ़ोल्डर के माध्यम से ड्राफ्ट तक पहुंचता हूं, तो मुझे बीसीसी दिखाई देता है। लेकिन अगर मैं इसे एमएपीआई-फ़ोल्डर्स के माध्यम से एक्सेस करता हूं, तो मुझे यह नहीं दिखाई देता है। उसके साथ थोड़ा सा खेलेंगे।

निष्कर्ष: इनपुट के लिए धन्यवाद। दरअसल, कोड ठीक काम करता है। मुझे मिले उत्तर के लिए नीचे देखें।

उत्तर

6

दरअसल, कोड ठीक काम करता है। यह बीसीसी सहित सभी दाएं शीर्षकों के साथ उचित मेल बनाता है।

मेल क्लाइंट बीसीसी को कैसे प्रदर्शित करता है?

mail client (उदाहरण के लिए आईएमएपी या एमएपीआई के माध्यम से मेरे मामले में पायथन या एमएस आउटलुक) निर्णय लेता है कि बीसीसी-हेडर प्रदर्शित करना है या नहीं। उदाहरण के लिए Outlook एक IMAP फ़ोल्डर से बीसीसी शीर्षलेख प्रदर्शित नहीं करता है। यह एक दूसरे से बीसीसी प्राप्तकर्ताओं को छिपाने की एक विशेषता है जहां उन्हें पहले मेल से अलग नहीं किया गया है (यह मानक से स्पष्ट नहीं है कि एक बीसीसी प्राप्तकर्ता को अन्य सभी बीसीसी प्राप्तकर्ताओं को देखने की अनुमति है या नहीं, Wikipedia देखें)।

ईमेल भेजने पर बीसीसी को कौन संभालता है?

मान लीजिए कि हमने मेल क्लाइंट में एक संदेश तैयार किया है और इसे किसी IMAP या MAPI फ़ोल्डर में संग्रहीत किया है। आईएमएपी/एमएपीआई फ़ोल्डर्स प्रदान करने वाला सर्वर मसौदा संदेश अपरिवर्तित छोड़ देता है। मेल भेजने पर बीसीसी-हेडर का क्या होता है कार्यान्वयन निर्भर है, और मेल क्लाइंट और mail transfer agent (उदा। मेरे मामले में एमएस एक्सचेंज सर्वर) दोनों पर निर्भर हो सकता है। संक्षेप में, लोग इस बात से सहमत नहीं हैं कि मेल क्लाइंट या मेल ट्रांसफर एजेंट बीसीसी हेडर को हटाने के लिए उत्तरदायी है या नहीं। हालांकि ऐसा लगता है कि अधिकांश डेवलपर्स का मानना ​​है कि यह मेल क्लाइंट का मेल मेल ट्रांसफर एजेंट के साथ मेल को छू नहीं रहा है (जैसे एमएस एक्सचेंज, एमएस एसएमटीपी, एक्सिम, ओपनवेव)। इस मामले में, मेल ट्रांसफर एजेंट संचार के RCPT TO: में परिभाषित प्राप्तकर्ता को ईमेल भेजता है, और ईमेल को अन्यथा अपरिवर्तित छोड़ देता है। हालांकि कुछ अन्य मेल ट्रांसफर एजेंट ईमेल से बीसीसी हेडर को पट्टी करते हैं (उदा। Sendmail, कमल नोट्स)। एक्ज़िम मेलिंग सूची here से शुरू होने पर एक बहुत ही व्यापक चर्चा मिल सकती है।

एमएस आउटलुक और एमएस एक्सचेंज के मामले में, एमएस आउटलुक बीसीसी भेजता नहीं है (लेकिन प्रत्येक बीसीसी प्राप्तकर्ता के लिए व्यक्तिगत ईमेल भेजता है) और एमएस एक्सचेंज ईमेल हेडर को नहीं छूता है, लेकिन पूरा ईमेल भेजता है (संभवतः बीसीसी प्राप्तकर्ताओं सहित) RCPT TO: में परिभाषित प्राप्तकर्ताओं को।

निष्कर्ष

मैं समझ में नहीं आया गुप्त प्रतिलिपि के लिए कोई गारंटी व्यवहार है कि वहाँ, और कहा कि आम तौर पर ग्राहक गुप्त प्रतिलिपि संभालती है। मैं अपने पाइथन कोड को बीसीसी प्राप्तकर्ताओं पर लूप करने के लिए फिर से लिखूंगा और प्रत्येक बीसीसी प्राप्तकर्ता के लिए एक ईमेल उत्पन्न करूंगा।

1

यह डिजाइन द्वारा इस तरह से हो सकता है। आखिरकार, बीसीसी का पूरा बिंदु यह है कि प्राप्तकर्ता एक दूसरे से छिपाए जाते हैं।

मैं समझता हूं कि आप ई-मेल नहीं भेज रहे हैं, बस इसे संग्रहीत कर रहे हैं। लेकिन मेरा अनुमान है कि एक्सचेंज के आंतरिक नियम तब आते हैं जब संदेश IMAP होता है। फ़ोल्डर में जोड़ा जाता है, जिसके कारण बीसीसी क्षेत्र को हटा दिया जाता है।

जाहिर है, जब Outlook का उपयोग कर किसी फ़ोल्डर में संदेश सहेजे जाते हैं तो बीसीसी फ़ील्ड नहीं हटाया जाता है। लेकिन मुझे लगता है कि आउटलुक कुछ आंतरिक मैकेनिज्म (एमएपीआई?) का उपयोग करके एक्सचेंज के साथ संचार करता है।

उपर्युक्त सभी अनुमान है।

कुछ मज़ा आप की कोशिश कर सकते:

  • एक खाली आउटलुक/MAPI प्रोफ़ाइल में, एक IMAP खाते बनाएँ। एक्सचेंज सर्वर पर ड्राफ्ट और प्रेषित आइटम स्टोर करने के लिए इसे सेट अप करें।
  • देखें कि IMAP का उपयोग करके दृष्टिकोण ड्राफ्ट के बीसीसी को सही तरीके से सहेज सकता है या नहीं।

मैंने ऊपर आईएमएपी पर एक्सचेंज से जुड़े इवोल्यूशन ई-मेल क्लाइंट का उपयोग करके उपर्युक्त प्रयास किया। दृष्टिकोण का उपयोग (सामान्य तरीके से जुड़ा हुआ), फिर मैंने ड्राफ्ट और भेजे गए आइटमों में एक नज़र डाली। दोनों जगहों पर बीसीसी क्षेत्र गुम था।

मुझे विश्वास है कि यह मेरे सिद्धांत का समर्थन करता है।

1

बीसीसी हैडर के इस वैकल्पिक संस्करण सेट करके देखें:

X-Receiver: [email protected] 

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

यह एक पूर्ण हैक है, जाहिर है।

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