Python论坛  - 讨论区

标题:[python-chinese] 求助: 关于poplib的问题,谢谢

2005年08月24日 星期三 23:47

泰传 温 wendwghit at yahoo.com.cn
Wed Aug 24 23:47:53 HKT 2005

其中的""" """注释是实际操作中取回来的mail头部,现在的问题是,我想在本机先查看一下email的题目,在决定是否将全部邮件下下来,还是决定删除,省得每次都要在邮件列表中一个一个的点击删除邮件
 
经常一上邮箱,发现好几百封Email, 一个一个点击删除,很麻烦,所以想作一个自动化得删除工具,可以使用脚本指定删除一些特定标题邮件
 
现在的问题是,邮件得subject项可能使用不同得编码方式,但是由于是我眼睛查看,至少需要转换成我可以看懂得文字,所以,想询问
 
1. 有没有好方法可以将不同编码格式转换成可视得文字
 
2. 在pop3.163.com这个程序好使,但是在mail.yahoo.com.cn不行, 有没有好方法可以根据邮箱地址获取它得pop3服务器得名字,比如类似pop3.yahoo.com.cn(这个不好使),yahoo得pop3服务器是什么名字?
 
原始代码:
# mailh.py
#!/usr/bin/evn python
#记住 user-pass-stat/list-top-dele/retr-quit这用法 
import poplib, getpass, string, sys    #先载入要用的函式库
"""
('+OK core mail', 
 [
 'Received: from www.linuxforum.net (unknown [211.147.5.190])', 
 '\tby mx8 (Coremail) with SMTP id Y8BBsYDGiUKWWYgB.1', 
 '\tfor <wen at 163.com>; Tue, 17 May 2005 18:25:04 +0800 (CST)', 
 'X-Originating-IP: [211.147.5.190]', 
 'Received: (from linux at localhost)', 
 '\tby www.linuxforum.net (8.11.6/8.11.2) id j4HAVIW27070;', 
 '\tTue, 17 May 2005 18:31:18 +0800', 
 'Date: Tue, 17 May 2005 18:31:18 +0800', 
 'Message-Id: <'">200505171031.j4HAVIW27070 at www.linuxforum.net>', 
 'To: wen at 163.com', 
 'Subject: \xc4\xfa\xb5\xc4\xc3\xdc\xc2\xeb : China Linux Forum', 
 'From: davidd at linuxforum.net', 'Sender: davidd at linuxforum.net', 
 'Reply-to: davidd at linuxforum.net', 
 'X-Mailer: UBBThreads', 
 '', 
 ''
 ], 
 622)
"""
host = raw_input("The hostname: ")     # raw_input()从 stdin 读取字串 
if (len(host)) == 0:                   #如果用户什么也不打,就用基本设定好了,自己方便嘛 
    host   = ""
    username   = ""
    password   = ""
else:
    username   = raw_input("your username: ")
    password   = getpass.getpass()         # getpass.getpass()会读取密码,和
                                        # raw_input()一样,只是不把键值输出到萤幕而已 
try:
     sess   = poplib.POP3(host)             #打开 pop3 连接,得到一个该连线的实体 
     sess.user(username)                    #向 pop3连线输出用户名 
     sess.pass_(password)                   #再来是密码 
except:                                 #如果上面三行出错了,就表示连线有问题,干脆走人啦 
     print   "O^O, there is an error in opening connection!"
     sys.exit()
nMess = sess.stat()[0]                  #问一下到底有多少信 
headers = []                            #这个本程式不会用到,但将来扩展时或许有用 
for i in range(1, nMess+1):             # Python 的 range()是从 0开始数,但邮件序号是从一开始的 
     print
     mesg   = sess.top(i,0)                 #用 top 指令读信件的头几行,这里 mesg[0] 是一
                                            #些资料, mesg[1]则是字串类的一个序列 
     print   i, mesg[0]
     for   j   in   range(len(mesg[1])):    #这个回圈尝试把寄件人,收件人,主题等资料抽出来 
         if   mesg[1][j][0:5]   == 'From:' or   mesg[1][j][0:5]   == 'Date:' \
                  or   mesg[1][j][0:8]   == 'Subject:' or   mesg[1][j][0:3]   == 'To:':
            print   mesg[1][j]
            headers.append(mesg[1][j])      #存起来,本程式不会用到 
print "\n"
if nMess>0:
     print "Received %i message total."%(nMess)
else:
     print "Nop, no mail on ", host, "for", username
sess.quit()                             #结束


		
---------------------------------
DO YOU YAHOO!?
  雅虎免费G邮箱-中国第一绝无垃圾邮件骚扰超大邮箱 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050824/47bf40ee/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号