python smtplib.SMTP()发送邮件报“UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xba in position 0: invalid start byte”错误

问题描述:
在用python 用smtplib.SMTP()函数发生邮件时报出“UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xba in position 0: invalid start byte”错误。
具体代码:

import smtplib
smtp = smtplib.SMTP()

报出错误:

Traceback (most recent call last):
  File "D:\Internet worm study\project\bozong\send_email.py", line 53, in <module>
    send_email = smtplib.SMTP()
  File "D:\python\lib\smtplib.py", line 263, in __init__
    fqdn = socket.getfqdn()
  File "D:\python\lib\socket.py", line 791, in getfqdn
    hostname, aliases, ipaddrs = gethostbyaddr(name)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xba in position 0: invalid start byte

内容分析是编码出错,但是我查看整个代码不涉及到编码问题。

用debug查看问题的原码:

问题代码

socket.py文件中,对应上面报错的其中一个文件,点开即可定位到。
    try:
        hostname, aliases, ipaddrs = gethostbyaddr(name)

gethostbyaddr(name)是获取本电脑的名字。我的电脑是“红米笔记本”,估计是电脑名称的问题。

————–解决的办法————–
1.在源码中进行修改

 try:
        hostname, aliases, ipaddrs = gethostbyaddr(name.encode('ascii','ignore'))

#添加“.encode('ascii','ignore')”

只能解决当前电脑问题,不清楚是否存在其他电脑兼容性问题。

2.修改自己笔记本的名称为英文数字
参考:https://jingyan.baidu.com/article/574c521966afb16c8c9dc160.html
修改笔记本名称要重启,注意保存文件。

参考
博主:Systemd
链接:https://blog.csdn.net/wwyy2018/article/details/83346812?ops_request_misc=&request_id=&biz_id=102&utm_term=python%2520smtplib.SMTP()%25E5%258F%2591%25E9%2580%2581%25E9%2582%25AE%25E4%25BB%25B6%25E6%258A%25A5%25E2%2580%259CUni&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-83346812.first_rank_v2_pc_rank_v29

本文地址:https://blog.csdn.net/weixin_41278305/article/details/110943401