套接字错误:[Errno 111] 连接被拒绝

27

我正在使用简单的Python库来进行SMTP操作,但是我遇到了以下错误:

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

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/smtplib.py", line 249, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python2.7/smtplib.py", line 309, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib/python2.7/smtplib.py", line 284, in _get_socket
    return socket.create_connection((port, host), timeout)
  File "/usr/lib/python2.7/socket.py", line 571, in create_connection
    raise err
socket.error: [Errno 111] Connection refused

使用 Python 2.7


2
最简单的情况是SMTP服务器未在“localhost”上运行。 - sheh
netstat -lntp | grep 25 的输出是什么? - greg
默认情况下,smtplib.SMTP尝试连接到25号端口。目前似乎没有任何东西在该端口上监听。如果您想运行一个,请参阅smtpd文档中的说明:http://docs.python.org/2/library/smtpd.html。 - holdenweb
3个回答

20

使用Python启动简单的SMTP服务器,方法如下:

python -m smtpd -n -c DebuggingServer localhost:1025

或者您也可以尝试Gmail SMTP设置。

server = smtplib.SMTP(host='smtp.gmail.com', port=587)

1
或在本地安装sendmail。 - Lidia

7

如果您:

python -m smtpd -n -c DebuggingServer localhost:1025

如 Allen Thomas 所建议的那样,请确保进行初始化操作:
server = smtplib.SMTP(host='localhost', port=1025)

使用匹配的端口号,此处为:1025。


1
你需要启用所使用协议的模式。然后它将在您的设备和脚本之间创建双向交互虚拟连接。例如,以下脚本将需要启用Telnet模式,以便它可以调用请求的另一个设备。
telA = connect(a)
   telA.write("xcom Dial Number:43062@10.47.8.108\n")
   time.sleep(10)
   quit_telnet(telA)       
   print telA.read_all()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接