20.13. smtpd — SMTP 服务器 — Python 文档

来自菜鸟教程
Python/docs/2.7/library/smtpd
跳转至:导航、​搜索

20.13. smtpd — SMTP 服务器

源代码: :source:`Lib/smtpd.py`



该模块提供了几个类来实现 SMTP 服务器。 一个是通用的什么都不做的实现,它可以被覆盖,而另外两个提供特定的邮件发送策略。

20.13.1. SMTPServer 对象

class smtpd.SMTPServer(localaddr, remoteaddr)
创建一个新的 SMTPServer 对象,该对象绑定到本地地址 localaddr。 它将 remoteaddr 视为上游 SMTP 中继器。 localaddrremoteaddr 都应该是一个 (host, port) 元组。 该对象继承自 asyncore.dispatcher,因此将在实例化时将自身插入到 asyncore 的事件循环中。
process_message(peer, mailfrom, rcpttos, data)
引发 NotImplementedError 异常。 在子类中覆盖它以对该消息做一些有用的事情。 在构造函数中作为 remoteaddr 传递的任何内容都可以作为 _remoteaddr 属性使用。 peer 是远程主机的地址,mailfrom 是信封发起者,rcpttos 是信封收件人,data 是包含内容的字符串电子邮件(应采用 RFC 2822 格式)。


20.13.2. 调试服务器对象

class smtpd.DebuggingServer(localaddr, remoteaddr)
创建一个新的调试服务器。 参数按照 SMTPServer。 消息将被丢弃,并打印在标准输出上。


20.13.3. 纯代理对象

class smtpd.PureProxy(localaddr, remoteaddr)
创建一个新的纯代理服务器。 参数按照 SMTPServer。 一切都将中继到 remoteaddr。 请注意,运行此操作很有可能使您成为开放中继,因此请小心。


20.13.4. MailmanProxy 对象

class smtpd.MailmanProxy(localaddr, remoteaddr)
创建一个新的纯代理服务器。 参数按照 SMTPServer。 一切都将中继到 remoteaddr,除非本地邮递员配置知道地址,在这种情况下,它将通过邮递员处理。 请注意,运行此操作很有可能使您成为开放中继,因此请小心。