社区
C#
帖子详情
急!!!如何分离出pop3接收过来的邮件正文和附件?
kuangliqun
2003-05-21 01:01:56
我用C#做了一个接收邮件的程序,内容都能解码出来。可是接收到的邮件编码格式都各不相同,有的是用Boundary分离了邮件头、正文和附件,有的却没有。邮件内容分离的规则到底是什么?
...全文
579
4
打赏
收藏
急!!!如何分离出pop3接收过来的邮件正文和附件?
我用C#做了一个接收邮件的程序,内容都能解码出来。可是接收到的邮件编码格式都各不相同,有的是用Boundary分离了邮件头、正文和附件,有的却没有。邮件内容分离的规则到底是什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kuangliqun
2003-05-22
打赏
举报
回复
多谢!问题已经解决
coollzh
2003-05-21
打赏
举报
回复
Content-Disposition: attachment;
filename="Demo.zip"
后面紧跟两个空行,下面就是附件内容,编码有base64,也有QP
Essence_zhx
2003-05-21
打赏
举报
回复
关键是理解邮件的格式问题,关于邮件大的格式可以这样的看。在outlook中把邮件另存为.eml的文件,然后用记事本打开就可以看到邮件的格式了。
其中可以分为邮件头信息,和邮件体信息。而每个邮件体是有多个段构成的,每个段都标识了自己是什么内容以及使用什么格式存储的。
下面做一下具体的说明:
邮件头中有这样的一段(包括空):
Content-Type: multipart/related;
type="multipart/alternative";
boundary="----=_NextPart_000_0055_01C31A04.A7752710"
其中 ----=_NextPart_000_0055_01C31A04.A7752710 表示对于每一段的分隔标志不过在一段开始标志是 "--"+"分隔标志",这段的结束用"--"+"分隔标志"+"--""表示。而每段的内容又可以有自己的子段。例如:
------=_NextPart_000_0055_01C31A04.A7752710
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_0056_01C31A04.A776ADB0"
这段表示子段的分隔符是----=_NextPart_001_0056_01C31A04.A776ADB0,下面看一下其中一个子段的内容。
------=_NextPart_001_0056_01C31A04.A776ADB0
Content-Type: text/plain;
charset="gb2312"
Content-Transfer-Encoding: base64
IA0KDQogICAgICC49iDIyyC88iDA+g0KICAgICANCg0KDQoNCiAgICAgINDVIMP7o7og1cXP6A0K
DQogICAgICDQ1CCx8KO6IMTQDQoNCiAgICAgILP2yfrI1cbao7oxOTc5LzEyLzEwDQoNCiAgICAg
ILunIL/ao7ogtPPBrA0KDQogICAgICDEv8ewxOrQvaO6Ms3yyMvD8bHSDQoNCiAgICAgILmk1/e+
rdHpo7rSu8TqDQoNCiAgICAgILXn19PTyrz+o7praWx4eUBob3RtYWlsLmNvbQ0KDQogICAgICC1
5yAgICC7sKO6MTM4NDI2MjAxMDANCg0KICAgICAguPbIy9b30rOjusGsvdMNCg0KICAgICAgyO28
其中
Content-Type: text/plain;表示该段为文本类型,也就是说邮件以普通文本类性浏览的时候是这段内容。
charset="gb2312" 表示给段文本的编码为gb2312
Content-Transfer-Encoding: base64 表示该段的内容是以base64的编码存储的。
下面的乱码就是以base64格式存促的该具体内容。
再看另一段
------=_NextPart_000_0055_01C31A04.A7752710
Content-Type: image/gif;
name="clip_image003.gif"
Content-Transfer-Encoding: base64
Content-ID: <005301c319c1$993f9790$0b00a8c0@zhx>
R0lGODlhCgABAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAAAB
AAEAgAAAAAECAwICRAEAOw==
Content-Type: image/gif;表示该段内容是以.gif为结尾的图片。
name="clip_image003.gif"表示文件名
Content-Transfer-Encoding: base64 该段的编码
Content-ID: <005301c319c1$993f9790$0b00a8c0@zhx> 标识了该附件在邮件内的唯一表示,该标识可以在邮件以html格式发送时显示图片的url所用,例如要在邮件中显示这副图片可以这样<IMG src="cid:005101c319c1$993f9790$0b00a8c0@zhx">。
其中 Content-Type:类型的值不是随便写的下面是一些常见文件扩展名所对应关系。
扩展名 格式
".gif" --->"image/gif"
".gz" --->"application/x-gzip"
".htm" --->"text/html"
".html" --->"text/html"
".jpg" --->"image/jpeg"
".tar" --->"application/x-tar"
".txt" --->"text/plain"
".zip" --->"application/zip
好了说到这里你应该知道怎么做了吧。
jonescheng
2003-05-21
打赏
举报
回复
高人。学习
pop3
下载
邮件
之标准C程序(DPF方案)
5. **处理
邮件
**:解析
邮件
的MIME格式,
分离
头部信息和
邮件
正文
,可能还需要处理编码(如Base64或Quoted-Printable)。 6. **断开连接**:完成
邮件
下载后,发送"QUIT"命令通知服务器断开连接。 描述中提到的DPF...
邮件
附件
自动
接收
解析
邮件
时,程序需要识别MIME类型,
分离
出
附件
,并根据类型进行处理。例如,HTML
邮件
可能需要解析嵌入的链接和资源,而PDF或Word文档则可以直接保存。 4. **文件保存**:将
附件
保存到指定位置,需要考虑文件命名...
PHP_
POP3
操作类
PHP_
POP3
操作类是一个用于处理
POP3
协议的PHP类库,它允许开发人员通过编程方式与
邮件
服务器进行交互,
接收
和处理电子
邮件
。
POP3
(Post Office Protocol version 3)是互联网上广泛使用的
邮件
检索协议,它使用户可以...
ASP.NET基于Web Mail收发系统设计与开发(源代码+论文).rar
使用MailMessage类来构建
邮件
内容,包括主题、
正文
、
附件
等。对于
邮件
接收
,可能使用
Pop3
Client类来连接
POP3
服务器并下载
邮件
。 此外,系统可能使用了数据库存储用户的邮箱设置、
邮件
信息等。这涉及到ADO.NET或者...
BS结构下的
邮件
系统的设计与开发
为了实现
邮件
的收发,我们需要理解和应用电子
邮件
相关的协议,如SMTP(Simple Mail Transfer Protocol)用于发送
邮件
,
POP3
或IMAP(Post Office Protocol或Internet Message Access Protocol)用于
接收
邮件
。...
C#
111,076
社区成员
642,572
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章