使用python发送网易邮件,遇到的问题

问题遇到的现象和发生背景

写的一个小脚本,一直都能正常运行,但是昨天突然出现了问题

遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
smtp_server = "smtp.163.com"            # 主服务器地址
server = smtplib.SMTP_SSL(smtp_server)
# 建立server驱动
server.connect(smtp_server, 465)                # 通过特定端口连接服务器
# 登录邮箱
server.login(send_er, pw)
server.sendmail(send_er, re_er, msg.as_string())
运行结果及详细报错内容
server = smtplib.SMTP_SSL(smtp_server)

File "C:\Users\DELL\AppData\Local\Programs\Python\Python39\lib\smtplib.py", line 1034, in init
SMTP.init(self, host, port, local_hostname, timeout,
File "C:\Users\DELL\AppData\Local\Programs\Python\Python39\lib\smtplib.py", line 263, in init
fqdn = socket.getfqdn()
File "C:\Users\DELL\AppData\Local\Programs\Python\Python39\lib\socket.py", line 791, in getfqdn
hostname, aliases, ipaddrs = gethostbyaddr(name)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb4 in position 0: invalid start byte

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

,尝试重新申请授权码等,但是还是未能解决,求dl解救

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

郁闷了,搞了好长时间,是因为昨天手欠,把电脑名从英文改成了 汉字,问题解决了,谢谢大家!

这个是不是编码问题

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb4 in position 0: invalid start byte

检查gethostbyaddr方法里,你对服务器的请求内容,检查 content-encoding 是否使用了压缩方式,reqeusts 可以自动解压 gzip ,但无法自动解压 br 压缩

以下内容部分参考ChatGPT模型:


这个错误是因为socket.getfqdn()返回的主机名包含了非utf-8编码的字符,而smtplib库默认是使用utf-8编码的。解决方法是手动指定主机名,可以使用socket库的gethostname()函数来获取本机主机名,然后手动指定给smtplib。修改代码如下:

import socket
smtp_server = "smtp.163.com"            # 主服务器地址
server = smtplib.SMTP_SSL(smtp_server)
# 建立server驱动
server.connect(smtp_server, 465)                # 通过特定端口连接服务器
# 登录邮箱
server.login(send_er, pw)
# 指定本机主机名
server.sendmail(send_er, re_er, msg.as_string(), socket.gethostname())

这样修改之后,就能够正常发送邮件了。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快

检查下你的程序的编码问题

我的解救方法