有关 python 对邮件内容解析的问题

张大山No100 2006-08-13 04:52:51
小弟最近写了一个收邮件的 python 程序,但是在邮件内容解析时,若为 multipart/* 类型时,邮件内容总是解析不出来,还是乱码(应该是还没解码)。而下边是源代码,邮件内容和接收内容也在后边附带有。请高手指点指点,急。。。。
  各们大哥,若谁能给小弟指点出一点头绪,小弟将感激不尽。。。。。。


#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
#### 源代码用来接收邮件,
import poplib
import email,string,sys,os
from email.Header import Header
from email.Header import decode_header

popClient = poplib.POP3('pop3.163.com')
popClient.set_debuglevel(1)
popClient.user('xtrg****')
popClient.pass_('5321****')

numMsgs, mboxSize = popClient.stat()

#print "Number of messages ", numMsgs
#print "Mailbox size", mboxSize
#print popClient.list()

def showMessage(mail):
if mail.is_multipart():
for part in mail.walk():
showmessage(part)
else:
type=mail.get_content_charset()
if type=='None':
print mail.get_payload()
else:
try:
print unicode(mail.get_payload('base64'),type)
except:
print mail.get_payload()

for id in range (numMsgs):
hdr,message,octet=popClient.retr(id+1)
mail=email.message_from_string(string.join(message,'\n'))
mail['subject'],mail.get('subject')
mail['from'],mail.get('from')
mail['To'],mail.get('To')
mail['date'],mail.get('date')
subject = email.Header.decode_header(mail['subject'])[0][0]
subcode= email.Header.decode_header(mail['subject'])[0][1]
FromAddr=email.Header.decode_header(mail['from'])[0][0]
ToAddr=email.Header.decode_header(mail['To'])[0][0]
date=email.Header.decode_header(mail['date'])[0][0]
print '*******************************************'
print ' ********** mail',id+1,'**************** '
print '\n'
print 'Subject: ',subject
print 'From: ',FromAddr
print 'To: ',ToAddr
print 'Date: ',date
print '邮件内容:'
showMessage(mail)
print '\n\n'

popClient.quit()

#######################################################################
######### 下边是解析后收到的邮件内容

*cmd* 'USER xtr****'
*cmd* 'PASS 532****'
*cmd* 'STAT'
*stat* ['+OK', '8', '8672']
*cmd* 'RETR 1'
*******************************************
********** mail 1 ****************


Subject: Wayne 邀请您开设 Google 电子邮件帐户
From: Wayne <moonbingbing@gmail.com>
To: xtrgm523@163.com
Date: Fri, 11 Aug 2006 19:28:38 +0800
邮件内容:

LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KV2F5bmUg6YKA6K+35oKo5byA6K6+5YWN6LS5IEdtYWlsIOW4kOaIt+OA
ggoK6KaB5o6l5Y+X5q2k6YKA6K+35bm25rOo5YaM5oKo55qE5biQ5oi377yM6K+36K6/6ZeuIGh0
dHA6Ly9tYWlsLmdvb2dsZS5jb20vbWFpbC9hLTM4YmU2YjU3MDctY2UwZTI2NWFhMC0yMWU3ODAz
ODNjCgrmgqjliJvlu7rluJDmiLfkuYvlkI7vvIzmiJHku6zkvJrlsIbmgqjnmoTmlrDnlLXlrZDp
gq7ku7blnLDlnYDlkYrnn6UgV2F5bmXvvIzku6Xkvr/mgqjpgJrov4cgR21haWwg5LiO5YW25L+d
5oyB6IGU57O777yBCgrkuI3nn6Xmgqjlr7kgR21haWwg5piv5ZCm5pyJ5omA5LqG6Kej77yM5a6D
5piv5LiA6aG55Z+65LqO5pCc57Si55qE5YWo5paw572R57uc6YKu5Lu25pyN5Yqh77yM5YW35aSH
5Lul5LiL5Yqf6IO977yaCgotIOi2hei/hyAyLDUwMCBNQiAoMkdCKSDnmoTlhY3otLnlrZjlgqjn
qbrpl7QKLSDlhoXnva4gR29vZ2xlIOaQnOe0ou+8jOWPr+WNs+aXtuafpeaJvuaCqOaJgOmcgOea
hOS7u+S9lemCruS7tgotIOWwhumCruS7tuWSjOebuOWFs+WbnuWkjeiHquWKqOW9kuWFpSLkvJro
r50i5LitCi0g5Yip55So5p6B5a+M5Yib5paw57K+56We55qEIEdvb2dsZSDmioDmnK/lvLrmnInl
ipvlnLDpmLLojIPlnoPlnL7pgq7ku7YKLSDmsqHmnInku6TkurrnlJ/ljoznmoTlpKfluYXlub/l
kYogLSDku4Xku4XmmK/lsI/luYXmloflrZflub/lkYrku6Xlj4rkuI7mgqjpgq7ku7blhoXlrrnn
m7jlhbPnmoTnvZHpobUKCuimgeWcqOazqOWGjOS5i+WJjeS6huino+acieWFsyBHbWFpbArnmoTo
r6bmg4XvvIzor7forr/pl67vvJpodHRwOi8vbWFpbC5nb29nbGUuY29tL21haWwvaGVscC9pbnRs
L3poLUNOL2JlbmVmaXRzLmh0bWwKCuWPpuWklu+8jOimgeaDs+S6huino+aCqOWPr+S7peS9leet
iei9u+advuWcsOi9rOiAjOS9v+eUqOi/meS4gOaWsOWei+eUteWtkOmCruS7tuacjeWKoe+8jOiv
t+WPgumYheaIkeS7rOaWsOeJiOi9rOaNouaMh+WNl++8mmh0dHA6Ly9tYWlsLmdvb2dsZS5jb20v
c3dpdGNoLwoK5oiR5Lus5LuN5Zyo5q+P5aSp5Yqq5Yqb5pS56L+bIEdtYWls77yM5Zug5q2k5Y+v
6IO96L+Y5Lya5a6a5pyf5ZCR5oKo5b6B5rGC5oSP6KeB5ZKM5bu66K6u44CC5oiR5Lus5biM5pyb
5oKo6IO95aSf5Zac5qyiIEdtYWls77yM5oiR5Lus6Ieq5bex5b6I5Zac5qyi44CC6ICM5LiU77yM
5a6D5Y+q5Lya5Y+Y5b6X6LaK5p2l6LaK5aW944CCCgroobflv4PmhJ/osKLvvIwKCkdtYWlsIOWw
j+e7hOaVrOS4igoK77yI5aaC5p6c54K55Ye75pys6YKu5Lu25Lit55qE572R5Z2A5peg5pWI77yM
6K+35bCG6K+l572R5Z2A5aSN5Yi25bm257KY6LS06Iez5rWP6KeI5Zmo55qE5Zyw5Z2A5qCP5Lit
77yJ44CCCg==




*cmd* 'RETR 2'
*******************************************
********** mail 2 ****************


Subject: 你好
From: xtrgm523@163.com
To: None
Date: Sun, 13 Aug 2006 09:18:45 +0800 (CST)
邮件内容:

你好吧

####################################################################################
########### 下边是邮件1 和 邮件2 的内容,来自于163邮箱。

日 期: 2006-08-13 09:18:45( 7 小时, 28 分钟 前)
发件人: xtrgm523@163.com 拒收
收件人: (无)
主 题: 你好 [新窗口打开]

你好吧

############################################################

日 期: 2006-08-11 19:28:38( 1 天, 21 小时, 19 分钟 前)
发件人: "Wayne" <moonbingbing@gmail.com> 添加到通讯录 拒收 邀请
收件人: xtrgm523@163.com
主 题: Wayne_邀请您开设_Google_电子邮件帐户 [新窗口打开]

-----------------------------------------------------------------------
Wayne 邀请您开设免费 Gmail 帐户。

要接受此邀请并注册您的帐户,请访问 http://mail.google.com/mail/a-38be6b5707-ce0e265aa0-21e780383c

您创建帐户之后,我们会将您的新电子邮件地址告知 Wayne,以便您通过 Gmail 与其保持联系!

不知您对 Gmail 是否有所了解,它是一项基于搜索的全新网络邮件服务,具备以下功能∶

- 超过 2,500 MB (2GB) 的免费存储空间
- 内置 Google 搜索,可即时查找您所需的任何邮件
- 将邮件和相关回复自动归入"会话"中
- 利用极富创新精神的 Google 技术强有力地防范垃圾邮件
- 没有令人生厌的大幅广告 - 仅仅是小幅文字广告以及与您邮件内容相关的网页

要在注册之前了解有关 Gmail
的详情,请访问∶http://mail.google.com/mail/help/intl/zh-CN/benefits.html

另外,要想了解您可以何等轻松地转而使用这一新型电子邮件服务,请参阅我们新版转换指南∶http://mail.google.com/switch/

我们仍在每天努力改进 Gmail,因此可能还会定期向您征求意见和建议。我们希望您能够喜欢 Gmail,我们自己很喜欢。而且,它只会变得越来越好。


#####################################################################################
############ 资料都在里边了,请各位大哥可以给小弟一些指点
############ 小弟最近在搞一个收发邮件的模块,发邮件已经搞好了,但就是这个收邮件
############  还有些问题,真的需要大家帮帮忙了。。。。 ;)
...全文
1559 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
张大山No100 2006-08-22
  • 打赏
  • 举报
回复
xyzxyz1111 大哥说的很对,我试了一下,真的就可以了,虽然还有一些小问题,但是主要问题已经解决了,太谢谢了~~ :)
findheart 2006-08-21
  • 打赏
  • 举报
回复
没有进行base64解码。
好像见过一个叫base64.py的模块。
张大山No100 2006-08-15
  • 打赏
  • 举报
回复
没有啊,我试一试
xyzxyz1111 2006-08-14
  • 打赏
  • 举报
回复
没有对邮件内容base64解码

if part.get_content_maintype() == 'text':
print part.get_payload(decode = True)
张大山No100 2006-08-13
  • 打赏
  • 举报
回复
小弟的邮箱是:
xtrgm623@163.com
各们大哥要是有见解,可以给我发信~ :)
张大山No100 2006-08-13
  • 打赏
  • 举报
回复
大家都看得出,第二封信没解析好。
我想那是因为第二封信是 mutipart/* 类型的,我的代码可能没解析好邮件内容。
但第一封就解的很好.因为我第一封信是以下边的方式发送的,附邮件发送代码如下:

################################################################################3
############## pysmtp 代码

import smtplib
import email.Message

text=''
FromAddr='xtrgm****'
pop3='pop.163.com'
usr='xtr****'
pas='532****'


while 1:
line = raw_input()
if not line:
break
text= text+'\n\r'+line

message=email.Message.Message()
message["Subject"]=title
message.set_payload(text)

s=smtplib.SMTP()
s.set_debuglevel(1)
s.connect('smtp.163.com')

s.login(usr,pas)
s.sendmail(FromAddr,ToAddr,message.as_string())
s.quit()

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧