如标题所示,我无法通过python应用程序通过我的Gmail帐户发送电子邮件。我已在网上搜索解决方案,但似乎没有解决它,我想我可能会问这里。 我的代码如下:
FROMADDR = "myemail@gmail.com"
LOGIN = FROMADDR
PASSWORD = "mypass"
TOADDRS = "varis81@hotmail.com"
msg = "Test message"
server = smtplib.SMTP('smtp.gmail.com', 587)
server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.login(LOGIN, PASSWORD)
server.sendmail(FROMADDR, TOADDRS, msg)
server.quit()
print "E-mail succesfully sent"
我收到消息:
socket.error: [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
我尝试了不同的端口,但它也不起作用。我也尝试过hotmail但它会导致同样的问题。我在使用PyDev在Eclipse上开发的Windows 7机器上使用Python 2.7(不要问:))。
任何帮助都会很棒! 提前谢谢。
答案 0 :(得分:1)
好吧,既然我无法发表评论,我将不得不尝试答案..
由此判断:Python SMTP Errno 10060 暂停可能会有所帮助吗?
答案 1 :(得分:1)
我在我的一台服务器上使用相同的构造。我的代码如下。
唯一的区别是'.starttls()之后的额外.ehlo()
。这个应该不是问题;来自RFC:
5.2 Result of the STARTTLS Command
The client SHOULD send an EHLO command as the first
command after a successful TLS negotiation.
根据RFC,如果客户端在ehlo
之后未发送starttls
,则服务器不应断开连接,但Google可能会对其SMTP服务器施加更严格的限制。我先检查一下。 (我看到提供商在减少垃圾邮件的情况下收紧这些条件,例如见Mailinator's 2007 writeup。)
它也可以是过滤端口 - 尝试在REPL中运行代码并确认哪条线是异常,如果它是connect()
您将知道它的网络。如果是之后,可能会使用smtplib.
值得注意的是,我偶尔会遇到不洁的关闭,导致.close()
左右的尝试/除外。
import smtplib
s = smtplib.SMTP()
s.connect("smtp.gmail.com")
s.ehlo()
s.starttls()
s.ehlo()
s.login("from@gmail.com", "frompass")
s.sendmail("fromname@gmail.com", toAddr, bytes)
try:
s.close()
except: pass