Python发送SMTP邮件时出错
我搞不清楚为什么这个代码不管用。我想用我学校的邮箱发邮件,结果用网上找到的代码却不行。相同的代码在我用GMail邮箱时是可以正常工作的。有没有人知道这个错误是什么意思?这个错误是在等了大约一分钟半后出现的。
import smtplib
FROMADDR = "FROM_EMAIL"
LOGIN = "USERNAME"
PASSWORD = "PASSWORD"
TOADDRS = ["TO_EMAIL"]
SUBJECT = "Test"
msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n"
% (FROMADDR, ", ".join(TOADDRS), SUBJECT) )
msg += "some text\r\n"
server = smtplib.SMTP('OUTGOING_SMTP', 465)
server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.login(LOGIN, PASSWORD)
server.sendmail(FROMADDR, TOADDRS, msg)
server.quit()
这是我收到的错误信息:
Traceback (most recent call last):
File "emailer.py", line 13, in
server = smtplib.SMTP('OUTGOING_SMTP', 465)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/smtplib.py", line 239, in init
(code, msg) = self.connect(host, port)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/smtplib.py", line 295, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/smtplib.py", line 273, in _get_socket
return socket.create_connection((port, host), timeout)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/socket.py", line 514, in create_connection
raise error, msg
socket.error: [Errno 60] Operation timed out
1 个回答
3
很可能你学校的SMTP服务器不允许外部访问587端口。Gmail是可以的,而且它需要你进行身份验证,以确保你就是你自己(这样垃圾邮件发送者就不能假装是你发送邮件,除非他们知道你的密码)。你的学校可能选择设置他们的邮件服务器,只允许来自学校内部的连接以这种方式发送邮件。