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

| 我正在这里的未知地区冒险... 我试图弄清楚使用Python实现电子邮件客户端的难易程度: 邮件检索 邮件发送 电子邮件格式 电子邮件渲染 我也想知道所有协议是否容易/难以支持例如SMTP,IMAP,POP3,... 希望有人可以指出正确的方向:)     
已邀请:
Python语言确实在其标准库中提供了对所需协议的原始支持。正确地使用然后正确地解析和组合“现代”电子邮件,可能很难做到。 另外,您没有说是否要为电子邮件客户端创建图形界面-如果要拥有适当的图形界面-直到可以使用为止,这是很多工作。 本地电子邮件存储将是比较容易的部分-除非您要正确实现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工作表被压缩成一个模块时,我感到特别高兴! 因此,如果您认真考虑,然后继续研究。您将学到很多。 :)     
不想阻止您,但是为什么要创建电子邮件客户端? 已经存在许多电子邮件客户端,几乎可以满足客户端的所有需求。功能齐全的客户端,轻量级客户端,命令行,Webmail,它们都已经存在。 也许您想为用户提供一些独特的功能,但是我认为最好编写一个插件,例如Thunderbird。或者,如果您对客户本身真的很感兴趣,则应该尝试为一个已经存在的项目做出贡献。 但是,就主题而言,编写客户端前端与编写任何GUI一样困难,但是邮件内部结构在Python中相当简单,因为它具有很多内置库,可用于IMAP,SMTP,POP3等内容。     
如果您是我,我将查看现有电子邮件客户端的源代码以了解一个主意:雷鸟,sylpheed爪子,笨蛋... 根据要支持的功能集,这是一个大项目。     
取决于您要构建客户端的级别。您可以使用smtplib之类的库快速处理一些事情,以处理连接/数据。和tk的GUI。但这又取决于您完成任务的水平。 自己的快速基本工具:简单。 (带库) 编写功能齐全的电子邮件客户端:辛苦。 除了使用库之外,您还可以找到您可以参与的开源项目。我建议看看Mailpile     

要回复问题请先登录注册