构建电子邮件客户端有多难? \- Python

新手上路,请多包涵

我在这里的未知领域冒险……

我正在尝试弄清楚使用 Python 实现电子邮件客户端有多难:

  • 电子邮件检索
  • 邮件发送
  • 电子邮件格式
  • 电子邮件渲染

另外我想知道是否所有协议都容易/难以支持,例如 SMTP、IMAP、POP3,…


希望有人能指出我正确的方向:)

原文由 RadiantHex 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 572
2 个回答

Python 语言确实在其标准库中提供了对所需协议的原始支持。然而,正确地使用 then,并正确地解析和组装“现代”电子邮件消息可能很难做到。

此外,您没有说是否要为您的电子邮件客户端创建一个图形界面——如果您想要一个合适的图形界面——直到可用为止,这需要大量工作。

本地电子邮件存储将是更容易的部分——除非您想正确实现 mbox 文件格式 RFC-4155 ,以便其他软件可以轻松读取/写入您获取的消息,您可以使用 ORM 将它们存储为 Python 对象或面向对象的数据库,例如 ZODB 或 MongoDB。

如果您想要的不仅仅是一个玩具电子邮件应用程序,您将有很多工作要做——正确编码电子邮件标头,例如,服务器身份验证和安全身份验证和传输层,为非ASCII 信息。尽管 Python 标准库中的模块确实实现了很多这样的功能,但它们的文档在示例方面存在不足 - 一个完整的电子邮件客户端必须使用所有这些。

当然,启动电子邮件客户端的地方,即使是玩具客户端,也可以查看电子邮件的最新 RFC(然后您必须从此处选择 http://www.ietf.org/ rfc/rfc-index 因为只是在谷歌上寻找“电子邮件 rfc”给出了一个糟糕的结果)。

原文由 jsbueno 发布,翻译遵循 CC BY-SA 4.0 许可协议

我想你会发现很多客户的重要部分都是预先打包好的:

电子邮件检索——我认为许多 Python 库都涵盖了这一点。

电子邮件发送 - 这并不难,而且很可能也包含在内。

电子邮件格式 - 我知道这已涵盖在内,因为我只是用它来为客户解析单个和多个部分的电子邮件。

电子邮件呈现 - 我会拍摄某种 HTML 呈现器。 Mozilla 项目的渲染器有一个 Python 接口。我想还有其他渲染引擎也有 python 接口。我知道 wxWidgets 有一些简单的 HTML 功能,而且重量会轻得多。想想看,Mozilla 引擎可能还有许多您需要的其他功能。您将不得不研究每个部分。

除了上面列出的内容之外,还有很多其他内容。就像任何有价值的东西一样,它不会在一天内建成。我会准确地列出你想要它做什么。然后开始组装原型。只需构建一个简单的框架来完成基本的事情。就像只让它支持没有 html 的消息的文本部分。然后以此为基础。

我对 Python 提供的大量编码模块感到惊讶。我需要过滤 html 电子邮件消息、解析样式表、嵌入样式以及其他所有内容。我在某处的 Python 库中找到了几乎所有我需要的函数。当我发现一些 css 工作表被 gzipped 并且有一个模块时,我特别高兴!

所以,如果你是认真的,那就深入挖掘。你会学到很多东西。 :)

原文由 Demolishun 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题