【问题标题】:'utf-8' codec can't decode byte 0xf4 in position 1: invalid continuation byte“utf-8”编解码器无法解码位置 1 中的字节 0xf4:无效的继续字节
【发布时间】:2017-12-29 07:42:20
【问题描述】:

感谢 python 脚本,我尝试发送电子邮件,但它不起作用。我尝试了不同的邮件地址(Hotmail 和 Gmail)、不同的端口等,但都没有工作,即使我只写了两行代码,我也总是拥有相同的地址。我也尝试了 Latin-1 或 utf-8 编码...没什么变化!

我正在 windows10 上使用 anaconda 和 python 3.6。

代码:

import smtplib
serveur = smtplib.SMTP('smtp.gmail.com',587)

还有错误:

runfile('C:/Users/Come/AppData/Roaming/Microsoft/Windows/Network Shortcuts/sanstitre3.py', wdir='C:/Users/Come/AppData/Roaming/Microsoft/Windows/Network Shortcuts')
Traceback (most recent call last):

File "<ipython-input-1-a733f02e7871>", line 1, in <module>
runfile('C:/Users/Come/AppData/Roaming/Microsoft/Windows/Network Shortcuts/sanstitre3.py', wdir='C:/Users/Come/AppData/Roaming/Microsoft/Windows/Network Shortcuts')

File "D:\Anaconda\lib\site-packages\spyder\utils\site\sitecustomize.py", line 710, in runfile 
execfile(filename, namespace)

File "D:\Anaconda\lib\site-packages\spyder\utils\site\sitecustomize.py", line 101, in execfile 
exec(compile(f.read(), filename, 'exec'), namespace)

File "C:/Users/Come/AppData/Roaming/Microsoft/Windows/Network Shortcuts/sanstitre3.py", line 9, in <module>
serveur = smtplib.SMTP('smtp.gmail.com',587)

File "D:\Anaconda\lib\smtplib.py", line 261, in __init__
fqdn = socket.getfqdn()

File "D:\Anaconda\lib\socket.py", line 673, in getfqdn
hostname, aliases, ipaddrs = gethostbyaddr(name)

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf4 in position 1: invalid continuation byte

编辑:

到目前为止,我尝试了不同的东西,但没有任何效果:

不,我的代码开头是这样的:

# -*- coding:Latin-1 -*-
import smtplib
import socket
hostname, aliases, ipaddrs = socket.gethostbyaddr('smtp.gmail.com')
socket.getfqdn()
socket.gethostname()
serveur = smtplib.SMTP("smtp.gmail.com",587)
serveur.ehlo()

我也 ping 了 smtp.gmail.com,这是结果,看起来一切正常...但它仍然无法正常工作(我还检查了我的文件名中是否没有任何特定字符)

Envoi d’une requête 'ping' sur gmail-smtp-msa.l.google.com [74.125.206.108] avec 32 octets de données :
Réponse de 74.125.206.108 : octets=32 temps=8 ms TTL=47
Réponse de 74.125.206.108 : octets=32 temps=7 ms TTL=47
Réponse de 74.125.206.108 : octets=32 temps=7 ms TTL=47
Réponse de 74.125.206.108 : octets=32 temps=6 ms TTL=47

Statistiques Ping pour 74.125.206.108:
    Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%),
Durée approximative des boucles en millisecondes :
    Minimum = 6ms, Maximum = 8ms, Moyenne = 7ms

最后我不认为错误来自消息,因为到目前为止它只是“我的消息”......

编辑 2:

我可能发现了问题,但我不知道如何解决它!

如果我直接写那些行:

In[59]: import socket

In[60]: socket.gethostname()
Out[60]: 'Côme'

我可以看到主机名有问题...但我不知道如何更改它。

【问题讨论】:

标签: python encoding windows-10 anaconda smtplib


【解决方案1】:

所以问题不在于脚本,而在于计算机本身的名称……!

如果您遇到同样的问题,请更改您的计算机名称,它应该可以工作!

感谢您的帮助....

【讨论】:

    【解决方案2】:

    用途:

    serveur = smtplib.SMTP('smtp.gmail.com:587')
    

    【讨论】:

    • 嗨,我刚试过,我有相同的答案/错误...我想知道问题是否来自编码,因为即使我设置了 Latin-1 编码,它似乎脚本继续使用 ut-8 编码……这可能吗?
    【解决方案3】:

    你试过了吗 serveur = smtplib.SMTP('smtp.gmail.com'.encode('utf8'),587)

    【讨论】:

    • 它也不起作用...在我的文件底部它仍在写:“entcoding:ASCII”...
    猜你喜欢
    • 1970-01-01
    • 2014-12-24
    • 2019-08-07
    • 2018-01-11
    • 2020-11-02
    • 2021-01-02
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多