本地Visual Studio运行Python邮箱验证程序出现utf-8解码报错如何解决?
报错解决方案
第一步:先修正代码中的语法错误
现有代码存在3处可直接触发运行异常的低级错误,先修复:
- 第7行
message定义处缺少字符串拼接符号,修正为:
message = ("Here is E-Mail authentication system"+ " :" + str(randomCode))
- 第21行
sendmail方法的发件人变量拼写错误,前面定义的变量是mailaddress,此处写的是mailadress(少了1个字母d),修正为:
mail.sendmail(mailaddress, sendTo, contents.encode("utf-8"))
except代码块下的print语句没有缩进,补全4空格缩进。
第二步:解决UTF-8解码报错
该报错由本地VS运行环境的默认编码和程序预期的UTF-8不匹配导致,按以下方法处理:
- 调整VS终端默认编码:打开VS设置,搜索
terminal.integrated.shellArgs.windows(Windows系统),添加参数["/K", "chcp 65001"],将终端默认编码切换为UTF-8。 - 也可以在代码开头添加以下内容,强制Python使用UTF-8编码处理IO流:
import sys import io sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding='utf-8') sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding='utf-8')
- 邮件内容编码可以额外增加错误忽略参数,避免特殊字符导致解码失败:
contents.encode("utf-8", errors="ignore")
额外适配提示
如果修改后出现SMTP登录报错,注意Gmail的SMTP服务现已不支持普通账号密码登录,需要先开启账号两步验证,生成应用专用密码后,用专用密码替换代码中的password字段即可正常发送邮件。
内容的提问来源于stack exchange,提问作者Eldarionn61
相关产品推荐
相关产品推荐

