2012-05-11 20 views
11

के साथ फॉर्म हेडर "से" मैं पाइथन ईमेल मॉड्यूल की सहायता से ईमेल उत्पन्न कर रहा हूं।
यहाँ कोड की कुछ लाइनों, जो मेरे सवाल यह दर्शाता हैं:पायथन ईमेल मॉड्यूल: कुछ यूनिकोड नाम + ईमेल

msg = email.MIMEMultipart.MIMEMultipart('alternative') 

msg['From'] = "[email protected]" 

msg.as_string() 

Out[7]: 'Content-Type: multipart/alternative;\n boundary="===============9006870443159801881=="\nMIME-Version: 1.0\nFrom: [email protected]\n\n--===============9006870443159801881==\n\n--===============9006870443159801881==--' 

आप देख सकते हैं, यहाँ सब कुछ ठीक है, से क्षेत्र ईमेल चींटी शामिल यह अच्छा है। लेकिन अगर मैं ईमेल से पहले कुछ नाम जोड़ना चाहता हूं तो क्या होगा? विशेष रूप से एक यूनिकोड:

In [8]: u.get_full_name() 
Out[8]: u'\u0414\u0438\u043c\u0430 \u0426\u0443\u043a\u0430\u043d\u043e\u0432' 

In [9]: msg = email.MIMEMultipart.MIMEMultipart('alternative') 

In [10]: msg['From'] = "%s <%s>" % (u.get_full_name(), "[email protected]") 

In [11]: msg.as_string() 
Out[11]: 'Content-Type: multipart/alternative;\n boundary="===============5792069034892928634=="\nMIME-Version: 1.0\nFrom: =?utf-8?b?0JTQuNC80LAg0KbRg9C60LDQvdC+0LIgPGVtYWlsQGF0LmNvbT4=?=\n\n--===============5792069034892928634==\n\n--===============5792069034892928634==--' 

यहाँ आप देख सकते हैं कि सभी स्ट्रिंग (नाम, ईमेल) (बेस 64 में एन्कोड किया गया था और यह भी काफी तार्किक है, कैसे MIMEMultipart कि स्ट्रिंग पता चल जाएगा यूनिकोड और गैर यूनिकोड भाग हैं)।
तो, मेरे सवाल यह है: //www.faqs:
From: =?UTF-8?B?0JLQmtC+0L3RgtCw0LrRgtC1?= <[email protected]> ?

इसके अलावा, मैं एक छोटे से RFC2822 (http सीखा है: मैं कैसे मुझे सुंदर बनाने के लिए "से" शीर्ष लेख की तरह ईमेल मॉड्यूल बताने के लिए है .org/rfcs/rfc2822.html, पृष्ठ 3.6.2)। यह बताता है:

उत्प्रेरक फ़ील्ड संदेश के स्रोत के मेलबॉक्स (एसएस) को इंगित करता है। "प्रेषक:" संदेश संदेश के लेखक (0), निर्दिष्ट करता है, जो संदेश के लेखन के लिए व्यक्ति (ओं) या सिस्टम (0) जिम्मेदार का मेलबॉक्स (एस) है। "प्रेषक:" फ़ील्ड संदेश के वास्तविक संचरण के लिए जिम्मेदार एजेंट के मेलबॉक्स को निर्दिष्ट करता है। उदाहरण के लिए, यदि कोई सचिव किसी अन्य व्यक्ति के लिए संदेश भेजना था, तो सचिव का मेलबॉक्स "प्रेषक:" फ़ील्ड में दिखाई देगा और वास्तविक लेखक का मेलबॉक्स "से:" फ़ील्ड में दिखाई देगा। यदि संदेश के उत्प्रेरक को को एक मेलबॉक्स द्वारा इंगित किया जा सकता है और लेखक और ट्रांसमीटर समान हैं, "प्रेषक:" फ़ील्ड का उपयोग नहीं किया जाना चाहिए। अन्यथा, दोनों फ़ील्ड दिखाई दे सकते हैं।

क्या इसका मतलब यह है कि मुझे इन दो शीर्षकों को गठबंधन करना चाहिए? (प्रेषक और प्रेषक)। मैं थोड़ी उलझन में हूं, क्योंकि मैंने अपने जीमेल में बहुत सारे ईमेल देखे हैं ("मूल दिखाएँ" के माध्यम से देख रहे हैं) जहां फ़ील्ड नाम और ईमेल प्रस्तुत किए जाते हैं।

सहायता के लिए धन्यवाद।

from email.MIMEMultipart import MIMEMultipart 
from email.header import Header 
from email.utils import formataddr 

author = formataddr((str(Header(u'Alał', 'utf-8')), "[email protected]")) 
msg = MIMEMultipart('alternative') 
msg['From'] = author 
print msg 

मुझे आशा है कि यह मदद मिलेगी:

उत्तर

32

आप नाम हिस्सा अलग से email.header.Header का उपयोग कर सांकेतिक शब्दों में बदलना करने की जरूरत है।

+0

अद्भुत! यह वही है जो मुझे चाहिए, धन्यवाद! –

+0

मैं इसे कई घंटों के लिए समझने की कोशिश कर रहा हूं! धन्यवाद! – Ofir

+0

धन्यवाद, प्रारूपकर्ता के दूसरे कोष्ठक के भ्रमित लोगों के लिए, यह ट्यूपल का प्रतिनिधित्व करता है। – iownthegame