Python发送SMTP邮件时出错

3 投票
1 回答
3229 浏览
提问于 2025-04-15 23:13

我搞不清楚为什么这个代码不管用。我想用我学校的邮箱发邮件,结果用网上找到的代码却不行。相同的代码在我用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是可以的,而且它需要你进行身份验证,以确保你就是你自己(这样垃圾邮件发送者就不能假装是你发送邮件,除非他们知道你的密码)。你的学校可能选择设置他们的邮件服务器,只允许来自学校内部的连接以这种方式发送邮件。

撰写回答