关于 Python 收发邮件的一些坑

因为工作的关系,最近使用 Python 自带的 imaplib 和 poplib 封装了两个模块,用来自动处理邮件。

基本的文档直接看官网就好了,这里记几个坑。

一,imaplib 是没有明确的状态表述当前 socket 的状态的,会经常出现 socket error EOF 这样的异常,然后连接就彻底中断了。查了很多资料,一般的处理方法是捕获异常-重新再来-直到成功,没找到根本的解决方案。

但是根据尝试的结果,我发现 poplib 的连接会比较稳定些,于是就出了个奇怪的方案:使用 IMAP 管理邮件状态,使用 pop 下载邮件。

二,这次主要对接的服务是 QQ 邮箱,不知道是否我的操作方式不对?总之就是 QQ 邮箱对 IMAP 协议的支持相当有限,使用 search 命令的话,如果只是一个简单的命令倒还好,一旦加上参数后,就各种参数非法或不支持之类的,例如我希望通过 message-id 来找邮箱,根本就做不到。

三,还是针对 QQ 邮箱的问题,使用pop能获取到一个类似 uuid 的值,但是使用 imap 就拿不到相应的 UID了,邮件的头里倒是有个 message-id,但是想使用 uid 操作的话,就是妄想了。

四,你能想像么?qq 企业邮箱里来自 qq 官方的一些提醒邮件的编码居然是 GBK 的,一个不留神以为是 UTF-8,解析出了一堆乱码。

Advertisements
此条目发表在未分类分类目录。将固定链接加入收藏夹。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s