我有一段代码片段,部分来自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','recipient@gmail.com',sentence.encode('iso-8859-2'),'test')
它从gmail帐户向另一个Gmail帐户发送电子邮件,但是当我登录gmail页面时,主题显示为
b'Ko\xf1'
我做错了什么?
答案 0 :(得分:0)
推荐的解决方案:使用email.header中的Header
功能
说明: RFC-2047期望在=?iso-8859-2?Q?...?=
内引用可打印的编码字符串。
你把" raw"字符串。
koń
的有效utf-8编码编码为Subject: =?UTF-8?Q?ko=C5=84?=
建议:如果可以,请考虑使用utf-8
代替iso-8859-2
。 utf-8
更为通用(区域性较小),资源成本(例如磁盘空间)几乎不是额外的,而且几乎是ascii"语言。