我在这里冒险未知......
我正在努力弄清楚使用Python实现电子邮件客户端有多难:
此外,我想知道所有协议是否容易/难以支持,例如SMTP,IMAP,POP3,...
希望有人能指出我正确的方向:)
答案 0 :(得分:25)
Python语言确实为其标准库中所需的协议提供原始支持。然后,正确地使用,并正确地解析和组装“现代”电子邮件,可能很难做到。
另外,你没有说你是否想为你的电子邮件客户端创建一个图形界面 - 如果你想拥有一个合适的图形界面 - 直到可用,它是相当多的工作的。
本地电子邮件存储将是更容易的部分 - 除非您想要正确实现mbox文件格式RFC-4155,以便其他软件可以轻松读取/写入您已获取的混乱,您可以将它们存储为Python对象使用ORM或面向对象的数据库,例如ZODB或MongoDB。
如果您想要的不只是玩具电子邮件应用程序,您将需要做大量工作 - 正确编码电子邮件标题,例如,服务器身份验证和安全身份验证和传输层,解码电子邮件文本正文本身用于非ASCII消息。虽然Python标准库上的模块确实实现了很多,但是他们的文档不能用于实例 - 而且完整的电子邮件客户端必须全部使用。
当然,启动电子邮件客户端,甚至是玩具客户端的地方,将会查看最新的电子邮件RFC(你必须从这里选择http://www.ietf.org/rfc/rfc-index,因为在谷歌上寻找“电子邮件rfc”给出了糟糕的结果。)
答案 1 :(得分:5)
我认为您会发现很多客户预先包装的重要部件:
电子邮件检索 - 我认为许多Python库都涵盖了这一点。
电子邮件发送 - 这并不难,也很有可能。
电子邮件格式 - 我知道这已经涵盖,因为我只是用它来解析客户的单部分和多部分电子邮件。
电子邮件渲染 - 我会拍摄某种HTML渲染器。 Mozilla项目的渲染器有一个Python接口。我猜也有其他渲染引擎也有python接口。我知道wxWidgets有一些简单的HTML设施,重量会轻很多。考虑一下,Mozilla引擎可能还有许多其他功能。你必须研究每个部分。
它比上面列出的要多得多。像任何有价值的东西,它不会在一天内建成。我会准确地列出你想要它做的事情。然后开始整理原型。只需构建一个执行基本操作的简单框架。就像它只支持没有html的消息的文本部分一样。然后以此为基础。
我对Python提供的大量编码模块感到惊讶。我需要过滤HTML电子邮件,解析样式表,嵌入样式以及其他所有东西。我在某个Python库中找到了我需要的所有函数。当我发现一些css表被gzip压缩,表示有一个模块时,我特别高兴!
所以,如果你认真思考,那就深入挖掘。你会学到很多东西。 :)
答案 2 :(得分:3)
不要劝阻你,但为什么要制作电子邮件客户端呢?
很多的电子邮件客户端已经存在,几乎是客户想要的一切。一个完全灵活的客户端,一个轻量级客户端,命令行,webmail,它已经存在。
也许您想为您的用户提供一些独特的功能,但我认为通过编写插件(例如Thunderbird)会更好。或者,如果您真的对客户本身感兴趣,您应该尝试在现有项目中做出贡献。
但是在主题上,编写客户端前端和编写任何GUI一样困难,但是在Python中邮件内部很容易,因为它有很多的内置库对于像IMAP,SMTP,POP3这样的东西。
答案 3 :(得分:1)
如果我是你,我会查看现有电子邮件客户端的源代码以获得一个想法:thunderbird,sylpheed-claws,mutt ......
根据您要支持的功能集,这是一个很大的项目。
答案 4 :(得分:1)