私は、stackoverflowユーザーから部分的に借りた次のコードのスニッパーを持っています:
#!/usr/bin/env python
# -*- coding: iso-8859-2 -*-
def send_email(user, pwd, recipient, subject, body):
import smtplib
FROM = user
TO = recipient if type(recipient) is list else [recipient]
SUBJECT = subject
TEXT = body
# Prepare actual message
message = """From: %s\nTo: %s\nSubject: =?iso-8859-2?Q?%s?=\n\n%s
""" % (FROM, ", ".join(TO), SUBJECT, TEXT)
print(message)
try:
server = smtplib.SMTP("smtp.gmail.com", 587)
server.ehlo()
server.starttls()
server.login(user, pwd)
server.sendmail(FROM, TO, message)
server.close()
print('successfully sent the mail')
except:
print("failed to send mail")
sentence='Koń'
send_email('login','pass','[email protected]',sentence.encode('iso-8859-2'),'test')
また、Gmailアカウントから別のGmailアカウントにメールを送信しますが、Gmailページにログインすると、件名は次のように表示されます。
b'Ko\xf1'
私は何が間違っているのですか?
推奨される解決策:email.headerのHeader
関数を使用する
説明: RFC-2047は、引用符で囲まれた印刷可能なエンコードされた文字列を内部に想定してい=?iso-8859-2?Q?...?=
ます。
「生の」文字列を入れます。
の有効なutf-8エンコーディングエンコーディングkoń
はSubject: =?UTF-8?Q?ko=C5=84?=
提案:可能であれば、utf-8
代わりに使用iso-8859-2
することを検討してください。utf-8
より一般的(地域的ではない)であり、リソースコスト(ディスク容量など)は「ほぼASCII」言語では少し余分です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加