【发布时间】:2016-11-21 11:19:58
【问题描述】:
我尝试通过 SMTP 简单地使用 python 调用 gmail。
但是,无论我怎么尝试,它仍然显示 UnicodeEncodeError
import smtplib
import sys
print(sys.getdefaultencoding())
host = "smtp.gmail.com"
port = 587
username = "ppapa@gmail.com"
password = "ppapapxasfsdfsdfsdfsd"
email_conn = smtplib.SMTP(host,port) #call smtp method
email_conn.ehlo()
错误提示:
utf-8
Traceback (most recent call last):
File "Useemail.py", line 10, in <module>
email_conn.ehlo()
File "C:\Users\Lance\Anaconda3\lib\smtplib.py", line 439, in ehlo
self.putcmd(self.ehlo_msg, name or self.local_hostname)
File "C:\Users\Lance\Anaconda3\lib\smtplib.py", line 366, in putcmd
self.send(str)
File "C:\Users\Lance\Anaconda3\lib\smtplib.py", line 351, in send
s = s.encode(self.command_encoding)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 5-6: ordinal not in range(128)
>>>
【问题讨论】:
-
你的代码对我有用,没有发现错误!
-
这里也一样。您的代码在 Python 2 和 3 中非常适合我。您的 Anaconda 3.x 安装是否可能以某种方式使用较旧的 Python 2 代码?另一方面,使用 SMTP 不再是发送电子邮件的首选方式,而且它的安全性更低(纯文本密码!)。推荐您使用 Gmail API (developers.google.com/gmail/api);制作了一个视频来演示如何使用它:plus.google.com/+GoogleDevelopers/posts/btPaP3VnrGr为了了解更多关于错误本身的信息,我很久以前写了一篇关于它的帖子wesc.livejournal.com/1743.html
-
谢谢,我在连接gmail之前发现,我应该在我的邮箱里按确认
标签: python-3.x smtp