我在这里冒险在未知的领域...
我正在尝试计算使用 Python 实现电子邮件客户端的难度:
- 电子邮件检索
- 电子邮件发送
- 电子邮件格式
- 电子邮件呈现
另外我想知道是否所有协议都易于/难以支持,例如 SMTP、IMAP、POP3、...
希望有人能指出我正确的方向:)
我在这里冒险在未知的领域...
我正在尝试计算使用 Python 实现电子邮件客户端的难度:
另外我想知道是否所有协议都易于/难以支持,例如 SMTP、IMAP、POP3、...
希望有人能指出我正确的方向:)
Python 语言确实在其标准库中提供了对所需协议的原始支持。然而,正确使用 then 并正确解析和组合“现代”电子邮件消息可能很难做到。
此外,您没有说是否要为您的电子邮件客户端创建一个图形界面——如果您想拥有一个适当的图形界面——直到可用为止,这是相当多的工作。
本地电子邮件存储将是更容易的部分 - 除非您想正确实现 mbox 文件格式RFC-4155以便其他软件可以轻松读取/写入您获取的消息,您可以使用 ORM 将它们存储为 Python 对象或面向对象的数据库,例如 ZODB 或 MongoDB。
如果您想要的不仅仅是一个玩具电子邮件应用程序,您将有很多工作 - 正确编码电子邮件标头,例如,服务器身份验证和安全身份验证和传输层,解码电子邮件文本正文本身的非ASCII 消息。尽管 Python 标准库中的模块确实实现了很多,但它们的文档缺少示例——完整的电子邮件客户端必须使用所有这些。
当然,启动电子邮件客户端(甚至是玩具客户端)的地方是查看最新的电子邮件 RFC(您必须从这里选择http://www.ietf.org/ rfc/rfc-index因为只是在 google 上寻找“email rfc”的结果很差)。
我想你会发现很多客户的重要部件都预先包装好了:
电子邮件检索——我认为许多 Python 库都涵盖了这一点。
电子邮件发送 - 这并不难,而且很可能也包括在内。
电子邮件格式——我知道这已经涵盖了,因为我只是用它来解析客户的单部分和多部分电子邮件。
电子邮件渲染 - 我会为某种 HTML 渲染器拍摄。Mozilla 项目的渲染器有一个 Python 接口。我猜还有其他渲染引擎也有 python 接口。我知道 wxWidgets 有一些简单的 HTML 工具,而且重量会轻很多。想想看,Mozilla 引擎可能还有很多你需要的其他功能。您必须研究每个部分。
它比上面列出的要多得多。就像任何有价值的东西一样,它不会在一天内建成。我会准确地列出你想要它做什么。然后开始组装一个原型。只需构建一个简单的框架来做基本的事情。就像它只支持没有 html 的消息的文本部分。然后以此为基础。
我对 Python 提供的大量编码模块感到惊讶。我需要过滤 html 电子邮件消息、解析样式表、嵌入样式以及其他大量内容。我在某个地方的 Python 库中找到了我需要的几乎所有函数。当我发现一些 css 表被 gzip 压缩并且有一个模块时,我特别高兴!
所以,如果你是认真的,那就深入研究。你会学到很多东西。:)
如果我是你,我会查看现有电子邮件客户端的源代码以获得一个想法:thunderbird、sylpheed-claws、mutt...
根据您要支持的功能集,这是一个大项目。