问题描述
我正在尝试创建一个包含发送电子邮件的 Python 程序,但我收到了 UnicodeEncodeError 错误。我见过的解决此错误的所有解决方案都不适用于我的脚本。我试图在 for 循环中添加 receiver = str(u' '.join(receiver).encode('utf-8'))
但它不起作用。这是我的代码的一部分(如果您愿意,我可以发布整个代码):
werewolfs = []
def group_roles(group):
for i in range(4):
werewolfs.append(group[i])
group_roles(group1)
group_roles(group2)
group_roles(group3)
for receiver in werewolfs:
receiver = str(u' '.join(receiver).encode('utf-8'))
DATA = 'From:%s\nTo:%s\nSubject:%s\n\n%s' % (my_email,receiver,subject,werewolf_mail)
server.sendmail(my_email,DATA)
这是整个错误信息:
Traceback (most recent call last):
File "/home/dominikb/.config/JetBrains/PyCharmCE2020.3/scratches/werewolf.py",line 131,in <module>
server.sendmail(my_email,DATA)
File "/usr/lib/python3.9/smtplib.py",line 859,in sendmail
msg = _fix_eols(msg).encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode character '\xf6' in position 134: ordinal not in range(128)
有人知道解决办法吗?那太好了。提前致谢!
解决方法
str()
尝试使用默认字符编码器对 unicode 字符 (\xf6) 进行编码的问题。要解决您的问题,您可以删除 str()
并仅使用 .encode()
。
receiver = u' '.join(receiver).encode('utf-8')
,
我解决了我的问题!我发现它不起作用,因为我写的消息中有德语字母,如 ä、ö、ü 和 ß。我删除了它们并且它起作用了。有没有办法用这样的字母在python中写一封电子邮件?