python编写查看是否有新邮件的小工具

本文介绍了如何使用Python编写一个检查Gmail新邮件的小工具,该工具可以查看邮件数量、下载邮件基本信息,包括发件人、日期和主题。提供了两个主要函数:`gmail_checker`用于检查新邮件数量,`checkMail`用于下载邮件详细信息。代码适用于Python2.5.2,并给出了imaplib和email库的使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  最近因为总是要查看是否有重要的工作邮件,频繁登录几个邮件网站,觉得很繁琐,于是用python写了个查询是否有新邮件和下载邮件信息的小工具。至于为什么没写收取邮件的工具,是因为不是每天都收到新邮件,而且现在很多广告邮件,不必都收取。

  使用过程:先通过小工具检查是否有新邮件,如果有,就下载邮件信息,查看邮件标题,确认是有用的邮件,才登录邮件网站收取。

Ps:代码测试环境win7+python2.5.2

测试1:检查是否有新邮件


测试2:下载邮件基本信息


代码包:checkmail
getNewMailNum:查看是否有新邮件
checkMail:下载邮件信息(发信人,发信日期,标题)
InfoOutPut:输出邮件信息
  工作原理是使用了imaplib模块,经过测试,发现126,163,gmail,qq邮件支持imap协议,其余sina,hotmail等还不支持,所以不是所有邮箱都可以使用。再次鄙视某些公司,口说为人民服务,实际暗怀私心,不积极开源与参与标准。哦,话题扯远了。:-)
   实际写起来不难,但是我对邮件信息的下载,是把所有收件箱的邮件都下载,无法过滤出新邮件,这是因为对imaplib还未了解透彻,无法实现只下载新邮件的信息,如果哪位读者知道,可以告诉我,加以改进。
  还有一个问题花了点时间,也没有解决,就是中英文混合字符串输出格式问题。因为中文占2个英文字符宽度。中英文混合在一起输出(我设置每行输出76个英文字符宽度),就会无法对齐,网上查了一些资料,是由于操作系统对单个中文和英文的像素设置不同而且中文像素宽不是英文的像素宽度的两倍造成的。所以,大家在收取含有大量中文的邮件就会格式无法对齐。
  另外,对于输出中文的解决方案,我是先设置python的默认字符为gbk(因为发现有些邮件中文编码是gbk,不是gb2312),否则print出来是乱码。
import sys
reload(sys)
sys.setdefaultencoding('gbk')

然后对获取的邮件字符解码
email.Header.decode_header(msg["Subject"])
Header.decode_header会把字符串解码,告诉你这串字符的编码是什么,然后把字符统一转成unicode,就可以打印输出了。

my_unicode(s, encoding)

--------------------getNewMailNum-------------------------------------

#-*- encoding: utf-8 -*-
#author : rayment
#CreateDate : 2012-06-24
import imaplib
import re
import InfoOutPut

def gmail_checker(mailhost, username, password, flag = 0):


        i=imaplib.IMAP4_SSL(mailhost)
        try:
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值