現在、Pythonスクリプトからデータベース(名前+電子メールアドレス)から取得した受信者のセットに電子メールを送信しようとしています。その名前がメッセージヘッダーにも含まれるようにメールを送信します。 受信者または送信者の名前でPythonからウムラウトを使用して電子メールを送信
UnicodeEncodeError: 'ascii' codec can't encode character '\xfc' in position 5: ordinal not in range(128)
しかし、メッセージの内容で
すべてのウムラウトが正しくために交換されています。名前はウムラウト(AOU ...)私のスクリプトがで失敗が含まれている場合でも、(場合に名前内部üがあります)例:ü
の場合は
=C3=BC
です。ここ
私は使用例のコードである:
import smtplib
from email.message import EmailMessage
from email.headerregistry import Address
from email.utils import make_msgid
msg = EmailMessage()
msg["Subject"] = "Python Test"
msg["From"] = Address("Max Müller" , addr_spec="[email protected]")
msg["To"] = Address("Max Möller", ddr_spec="[email protected]")
msg.set_content("""\
This is a test with umlauts. öäü
--- Max Müller """)
server = smtplib.SMTP('localhost', 25)
server.send_message(msg)
server.quit()
Iは、Python 3.5.2でそれを試してみました。
送信者は、ほとんどの電子メールクライアントに無用であるb'Max M\xc3\xbcller'
に名前を付けるように私は私のメールクライアントになった
msg["From"] = Address("Max Müller".encode("utf-8") , addr_spec="[email protected]")
によって
msg["From"] = Address("Max Müller" , addr_spec="[email protected]")
を交換する場合。
どのように受信者のウムラウトを取得し、送信者はメールのコンテンツのようにエンコードされますか?
msg ["To"] 'が複数のアドレスのタプルである場合、これは機能しません。しかし、私はmsg ["To"] 'タプルを反復したくありません。 'send_message'メカニズムを使うと、これはうまくいきます。 –
@ M.K.akaGrisu:そうです、これは複数のアドレスでは機能しませんでした。私の編集を参照してください。 –