首页 文章

python SMTP - 套接字错误

提问于
浏览
0

我有一个python脚本在localhost中运行SMTP服务器 . 这是我非常简单的代码:

import smtpd
import asyncore

class CustomSMTPServer (smtpd.SMTPServer):

    def process_message(self, peer, mailfrom, rcpttos, data):
        print 'Receiving message from:', peer
        print 'Message addressed from:', mailfrom
        print 'Message addressed to  :', rcpttos
        print 'Message length        :', len(data)

 server = CustomSMTPServer(('127.0.0.1', 25), None)

 asyncore.loop()

如果我从localhost上运行的电子邮件客户端发送电子邮件,则电子邮件将成功到达STMP服务器 . 但是,如果我从位于同一本地网络(192.168.1.1/24)的计算机中运行的电子邮件客户端发送电子邮件,则不会成功 . 下面是我从Outlook Express获得的错误:

The connection to the server has failed. Account 'localhost', Server '192.168.1.115'.        
Protocol SMTP, Port: 25, Secure(SSL): No, Socket Error: 10061, Error Number: 0x800CCC0E

为了以防万一,我在两台PC上都停用了McAfee防火墙,但我仍然遇到同样的错误 .

哪里可以问题?它与asyncore.loop()方法有什么关系吗?谢谢!

1 回答

  • 3

    您的服务器正在环回接口上运行:

    server = CustomSMTPServer(('127.0.0.1', 25), None)
    

    无法从任何外部网络访问该接口,只能从本地计算机访问该接口 .

    您需要在真实的网络接口(例如192.168.1.115,基于错误消息)上启动您的电子邮件服务器 .

    此外,我怀疑你无论如何都无法检索任何消息 . 您正在运行SMTP服务器:它通过SMTP接受邮件但不提供POP3 / IMAP服务,因此您无法使用远程电子邮件客户端检索邮件 . SMTP服务器可用于在本地基于文件的消息存储中存储消息(并且如果格式正确,则在同一台计算机上运行的电子邮件客户端可以从文件中检索消息) .

相关问题