2012-05-11 14 views
11

私はPython電子メールモジュールの助けを借りて電子メールを生成しています。ここ
は私の質問を実証した、数行のコードです:Python電子メールモジュール:フォームヘッダー「From」とユニコード名+電子メール

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==--' 

あなたが見ることができるように、すべてがフィールドは、電子メールのアリが含まれているから、それはクールだ、ここに大丈夫です。しかし、電子メールの前に名前を追加したいのですが?特に1がUnicode:

ここ
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==--' 

あなたはすべての文字列(名前、メールアドレス)はBASE64でエンコードされた(そしてそれも非常に論理的であることを、見ることができる、のMimeMultipartは、その文字列を知っているだろうかユニコードと非ユニコードの部品が含まれています)。
だから、私の質問は:どのように私のようなヘッダの「From」私はかなり作るために、電子メールモジュールに指示する必要があります://www.faqs:
From: =?UTF-8?B?0JLQmtC+0L3RgtCw0LrRgtC1?= <[email protected]> ?

はまた、私は少しRFC2822(HTTPを学びました.org/rfcs/rfc2822.html、p.3.6.2)。

発信者フィールドは、 メッセージの送信元のメールボックスを示します。 「From:」フィールドには、メッセージの作成者である 、つまりメッセージを書く人またはシステムのメールボックス( )が指定されます。 「Sender:」フィールドには、 メッセージの実際の送信を担当するエージェントのメールボックス が指定されています。たとえば、秘書が のメッセージを別の人に送信する場合は、秘書のメールボックスは 「送信者:」フィールドに表示され、実際の作成者のメールボックスは の「差出人」フィールドに表示されます。メッセージの発信者が単一のメールボックスで と示され、作成者と送信者が同一である場合は、 "送信者:"フィールドを使用しないでください(SHOULD NOT)。それ以外の場合は、両方のフィールドにSHOULD が表示されます。

これらの2つのヘッダーを組み合わせる必要がありますか? (送信者と送信者)。送信元のフィールド名とメールアドレスが表示されている私のGmailのメールに気付いたので(ちょっと混乱しました)

ありがとうございました。

答えて

32

あなたは別途email.header.Headerを使用して名前の一部をコードする必要があります。

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 

私はこれが役立つことを願っています。

+0

AWESOME!これはまさに私が必要なものです、ありがとう! –

+0

私は数時間それを理解しようとしてきました!ありがとう! – Ofir

+0

ありがとう、formataddrの2番目のかっこを混乱させる人は、タプルを表します。 – iownthegame

関連する問題