有关 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,我们自己很喜欢。而且,它只会变得越来越好。


#####################################################################################
############ 资料都在里边了,请各位大哥可以给小弟一些指点
############ 小弟最近在搞一个收发邮件的模块,发邮件已经搞好了,但就是这个收邮件
############  还有些问题,真的需要大家帮帮忙了。。。。 ;)
...全文
1648 6 打赏 收藏 转发到动态 举报
写回复
用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()

源码链接: https://pan.quark.cn/s/a4b39357ea24 ### Ubuntu 用户磁盘空间分配与 Linux 硬盘分区方案深入剖析 #### 标题与描述中的核心知识要点说明 本文件将系统性地阐释在 Ubuntu 操作系统中如何为用户科学地分配磁盘空间,并深入分析适用于 Linux 的硬盘分区策略。文件不仅会介绍基础的目录结构及其功能,还会提供具体的分区指导以及在实际操作过程中需要留意的事项。 #### 目录结构及其功能说明 - **/bin**:系统常用基础命令的存储位置。 - **/boot**:包含启动时所需文件,例如内核镜像和初始化脚本等。 - **/dev**:存放设备文件。 - **/etc**:存储系统配置信息。 - **/home**:用户个人目录,每个用户拥有独立的子目录。 - **/lib**:存放运行二进制文件所需的共享库。 - **/mnt**:用于临时挂载其他文件系统的目录,可用于挂载软盘或 CD-ROM 设备。 - **/proc**:虚拟文件系统目录,存储当前运行内核的相关信息。 - **/root**:超级用户(root)的主目录。 - **/sbin**:系统管理程序的存放位置。 - **/tmp**:临时文件存储的目录。 - **/usr**:存放只读数据,包括应用程序的可执行文件和文档等。 - **/var**:存储可变数据文件,例如日志文件和邮件队列等。 - **/X11R6**:X Window 系统的安装路径。 #### 硬盘分区策略分析 文件中强调,在 Linux 环境下进行硬盘分区时需要综合考量多个因素,以确保系统的稳定运行和性能表现。以下是一些关键的分区建议: 1. **/boot ...
代码转载自:https://pan.quark.cn/s/4f1937b2c732 Quartus Prime是由Altera公司(现已被Intel公司所收购)研发的一款集成化电子设计自动化软件,其主要应用领域在于Field-Programmable Gate Array(现场可编程门阵列)以及Complex Programmable Logic Device(复杂可编程逻辑器件)的设计、仿真、综合、布局布线以及编程等任务。在本案例中,所提及的为Quartus Prime 17.1版本的安装程序,该程序内含器件库文件及其他相关组件,适用于Windows 10 64位操作系统环境,并且已有相关测试验证其可用性。 **1. Quartus Prime概述** Quartus Prime是Altera/Intel公司FPGA设计流程的核心工具,它提供了一个集成化的开发平台,支持从设计概念到硬件实现的完整过程。该软件不仅涵盖了逻辑综合、时序分析、仿真、物理设计等基础功能,还包含了高速接口IP核、嵌入式处理器系统、内存资源管理等多种高级特性。 **2. Quartus Prime 17.1版本的新增功能** - QSYS系统构建工具的优化:17.1版本可能对QSYS系统进行了升级,使得系统集成更为便捷,支持更多的外部设备和处理器模型。 - 性能提升:可能增强了综合和布局布线的效率,降低了设计的功耗和面积。 - 新器件支持:可能会增加对最新发布的Altera FPGA和CPLD产品的支持,如Arria 10、Cyclone 10等系列产品。 - 调试功能的改进:可能强化了硬件调试工具,如JTAG调试和软件调试器的性能。 **3. 器件库文件** 器件库文件是Quartu...

37,738

社区成员

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

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