【问题标题】:Can not start smtp in Python无法在 Python 中启动 smtp
【发布时间】:2012-11-01 17:40:51
【问题描述】:

我尝试使用以下代码使用 python 启动 smtp 服务器:

import smtplib
smtp_server = smtplib.SMTP('localhost')

我收到以下错误:

File "test.py", line 2, in <module>
    smtp_server = smtplib.SMTP('localhost')
  File "/usr/local/lib/python2.7/smtplib.py", line 242, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/local/lib/python2.7/smtplib.py", line 302, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/local/lib/python2.7/smtplib.py", line 277, in _get_socket
    return socket.create_connection((port, host), timeout)
  File "/usr/local/lib/python2.7/socket.py", line 571, in create_connection
    raise err

我尝试telnet localhost 25telnet localhost 但它们都给出了以下错误:

Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host: Connection refused

相同的 python 代码在我的另一台机器上运行良好。

有什么建议吗?

谢谢。

更新:

我遇到问题的机器正在运行 Python 2.7.2,而代码运行良好的机器正在运行 Python 2.6.2。不知道是不是这个原因之一。

【问题讨论】:

  • 这是你本地smtp服务器的配置。如果没有看到更多的配置细节,很难说更多。

标签: python smtp telnet


【解决方案1】:

问题是 smtplib 没有提供 SMTP 服务器实现,它实现了 SMTP 客户端。最有可能的是,代码尝试连接到 localhost 并失败。见http://docs.python.org/2/library/smtplib.html

您所写的另一台机器是否已经在运行 SMTP 服务器?

你想做什么?

【讨论】:

  • 如何判断机器是否正在运行 SMTP 服务器?如果它没有运行,如何启动一个?
  • telnet 到 SMTP 端口,例如。尝试在不运行程序的情况下执行此操作。如果成功,则已经有服务器。很难给出合理的答案,我需要了解您要做什么以及出于什么目的。
  • 我正在尝试启动 SMTP 服务器并在程序结束时发送电子邮件以通知我运行状态。它在所有其他机器上运行良好。
  • 由于 smtplib 是 smtp 客户端的实现,它不能只在其他机器上工作。您没有使用 smtpd。如果它有效,它就不会以你认为的方式运作。它只是连接到本地主机上的 smtp 服务器。可能然后您可以发送电子邮件。如果它工作的机器可以通过网络访问,请尝试指定它(或其 IP)而不是 localhost。创建和设置 SMTP 服务器通常不仅仅是发送电子邮件所需要的。
【解决方案2】:

smtplib 是 SMTP 协议客户端。你要找的是smtpd

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多