怎样取邮件中的附件(MIME编码格式,UUENCODE编码格式)

hexz 2000-01-03 08:14:00
HI,亲爱的朋友:

我正在写一个邮件客户端,但不知道怎样取出邮件中的附件!

希望能得到您的帮助,您看我出手很大方的不是吗?


...全文
811 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccpyccpy 2000-09-05
  • 打赏
  • 举报
回复
seaWind的方法不一定适用于所有的邮件系统
Hacky 2000-01-27
  • 打赏
  • 举报
回复
那么应该怎样知道哪里是正文的开始呢?我发现使用Outlook和使用263邮局发给我的
邮件中的正文位置都不一样,应该怎么判断?有一定的规则吗?
seawind 2000-01-11
  • 打赏
  • 举报
回复

嘻嘻,我正好也在琢磨这样的东东,我的处理方法是这样的:

1.MIME格式

从邮件头部开始读取数据分析,前面有诸如From,To,..等,如果读到了Mime-Version
则表明为MIME格式的邮件,否则则认为是UUEncode格式.

继续分析,直到读到了Content-Type,如果是multipart/mixed则是有附件了,否则
就是只有邮件正文了.如果有附件的话,紧接着会有Boundary,取得其值,这里就是重点了!

在接下来的邮件数据中查找取得的Boundary,依次会找到正文,第一个附件编码数据,
第二个附件编码数据...

正文可能会经过quoted-printable编码,附件则一般是base64编码,解码就可以了.

2.UUEncode

UUEncode相对MIME来讲似乎简单一些,如果有附件的话在正文后面会跟上附件,附件
的样子是这样的:
begin 600 seamail.exe
M.......
M.......
end

很明显的标志是begin 600 ,而且是一行的开头.你可以用CString::Find来查找
"\r\nbegin 600 "这个字符串,查找到"\r\nend"则表明当前的附件编码数据已经
结束了.

得到的附件编码数据用UUEncode解码了,^_^,跟MIME解码差不多.

Good luck to you!

zdg 2000-01-05
  • 打赏
  • 举报
回复
在本站也有这个文档和相关例子程序:
http://www.midatech.com/csdn/visual%20C++/Source%20Code/Internet/mimemfc.shtml.htm
jamesw 2000-01-05
  • 打赏
  • 举报
回复
see
http://www.codeguru.com/internet/mimemfc.shtml
有详细说明和source code
目录 第1章 Delphi网络编程基础知识 1.1 TCP/IP 1.1.1 TCP/IP结构 1.1.2 应用层协议 1.1.3 传输层协议 1.1.4 网络层协议 1.1.5 RFC和标准简单服务 1.2 TCP/IP基本概念 1.2.1 IP地址 1.2.2 地址解析 1.2.3 域名系统 1.2.4 数据包的封装和分用 1.2.5 端口号 1.3 网络编程接口(Winsock API) 1.4 Winsock常用函数介绍 1.4.1 基本Socket函数 1.4.2 数据库函数 1.4.3 Winsock规范提供的扩展函数 1.5 Delphi Socket网络组件介绍 1.5.1 ClientSocket组件 1.5.2 ServerSocket组件 第2章 基本网络编程实例 2.1 获IP地址 2.1.1 利用系统工具获得IP地址 2.1.2 使用GetHostByName函数来获IP 2.1.3 使用WSAAsyncGetHostByName函数获IP地址 2.1.4 多IP情况的处理 2.1.5 关于IP地址和实际的地址的区别 2.2 获子网掩码 2.2.1 Windows NT系统子网掩码 2.2.2 Window 9x系统子网掩码 2.3 获计算机名 2.3.1 获和设置本机主机名 2.3.2 获远程主机名称 2.4 网络连接情况检测 2.4.1 使用WinInet高级函数库函数检测网络状态 2.4.2 通过读系统状态参数检测网络状态 2.5 获DNS信息 2.5.1 Windows NT系统DNS信息 2.5.2 Windows 9x系统DNS信息 2.6 网卡信息的获 2.6.1 使用GUID获网卡地址 2.6.2 NetBIOS来获得MAC地址 2.6.3 使用RPC方式获得MAC地址 第3章 FTP高级编程 3.1 FTP简介 3.2 安装设置FTP服务器 3.3 使用Windows内置FTP程序 3.4 深入FTP协议 3.4.1 FTP命令大全 3.4.2 FTP工作模式 3.5 开发FTP程序的方法 3.6 API开发高级FTP客户端程序 3.6.1 建立工程项目 3.6.2 关键代码分析 3.7 开发FTP服务器 3.7.1 建立工程项目 3.7.2 关键代码分析 第4章 HTTP高级开发 4.1 HTTP协议基本知识 4.1.1 HTTP背景 4.1.2 HTTP的内容 4.1.3 消息(Message) 4.1.4 请求(Request) 4.1.5 响应(Response) 4.1.6 访问认证 4.1.7 URL编码 4.1.8 HTTP协议的应用 4.2 开发文件下载程序 4.2.1 建立工程项目 4.2.2 关键代码分析 4.2.3 技术要点分析 4.3 HTTP API高级开发 4.3.1 控件介绍 4.3.2 关键代码分析 4.3.3 关键技术分析 4.4 Web Server高级开发 4.4.1 Web Server的基本理论 4.4.2 建立工程项目 4.4.3 关键代码分析 4.4.4 Web服务器的扩充 4.5 Web代理服务器的实现 4.5.1 代理服务器介绍 4.5.2 IE使用代理服务器设置 4.5.3 建立工程项目 4.5.4 关键代码分析 第5章 Telnet高级编程 5.1 Telnet简介 5.2 使用Windows的Telnet程序登录远程服务器 5.3 深入Telnet协议 5.3.1 NVT ASCII字符集 5.3.2 Telnet命令 5.3.3 协商选项 5.3.4 子协商选项 5.3.5 Telnet操作方式 5.4 BBS客户端高级开发 5.4.1 建立工程项目 5.4.2 关键代码分析 5.5 Telnet代理服务程序实现 5.5.1 建立工程项目与关键代码分析 第6章 E-mail协议及高级编程 6.1 SMTP及发送电子邮件 6.1.1 SMTP的模型描述 6.1.2 SMTP的会话过程 6.2 POP3与接收电子邮件 6.2.1 POP3的模型描述 6.2.2 POP3的会话过程 6.3 信件结构详述 6.3.1 RFC822信件的格式和内容 6.3.2 构造符合RFC822的信件 6.3.3 RFC822信件的语法分析 6.4 MIME编码解码与发送附件 6.4.1 RFC822的局限 6.4.2 UUENCODE编码与解码 6.4.3 MIME及其编码 6.4.4 构造MIME信件 6.4.5 MIME信件的语法分析 6.5 E-mail乱码 6.5.1 乱码的常见形式及形成原因 6.5.2 避免乱码的方法 6.6 E-mail程序开发 6.6.1 建立工程项目 6.6.2 关键代码分析 第7章 网络监控、流量统计与资源搜索 7.1 网络流量统计 7.1.1 建立工程项目 7.1.2 关键代码分析 7.2 网络连接监控 7.2.1 建立工程项目 7.2.2 关键代码分析 7.3 网络配置和统计的使用实例 7.3.1 建立工程项目 7.3.2 关键代码分析 7.4 局域网资源搜索 7.4.1 建立工程项目 7.4.2 关键代码分析 7.4.3 关键技术分析 第8章 Modem串口通信编程 8.1 Modem的基础知识 8.1.1 Modem状态 8.1.2 AT命令 8.1.3 S寄存器 8.1.4 Modem返回信息码 8.2 SPComm通信控件 8.2.1 SPComm控件的属性 8.2.2 SPComm控件的方法 8.2.3 SPComm控件的事件 8.3 Windows串口通信编程 8.3.1 Windows通信API和串口通信 8.3.2 打开和关闭串口 8.3.3 串口配置和串口属性 8.3.4 读写串口 8.3.5 通信事件 8.3.6 设备控制命令 8.4 ASCII控制字符 8.5 Modem文件传输应用实例 8.5.1 建立工程项目 8.5.2 关键代码分析 第9章 拨号网络编程 9.1 RAS客户机 9.2 建立拨号连接 9.3 使用RAS(远程访问服务) 9.3.1 用系统电话簿进行拨号 9.3.2 电话簿条目的管理 9.3.3 在程序创建拨号连接 9.3.4 状态通知 9.4 RAS高级开发拨号程序 9.4.1 创建工程项目 9.4.2 关键代码分析 第10章 传真高级编程 10.1 传真编程的基础知识 10.1.1 T.30传真通信协议 10.1.2 HDLC信息包 10.1.3 传真字段 10.1.4 成串信息包 10.1.5 同步线路控制 10.1.6 传真的五个阶段介绍 10.2 传真Modem的分类 10.2.1 传真分类 10.2.2 一类传真Modem 10.2.3 二类传真Modem 10.3 传真会话实例描述 10.3.1 一类传真的发送实例 10.3.2 一类传真的接收实例 10.3.3 二类传真的发送实例 10.3.4 二类传真的接收实例 10.4 DIS/DCS位映像 10.4.1 向后兼容性和可扩展性 10.4.2 新的 FCF 10.4.3 最小性能集合 10.4.4 DIS/DCS信息包的逐位解释 10.5 T.4传真图像协议 10.5.1 分辨率 10.5.2 文件尺寸 10.6 传真编码 10.6.1 一维编码(改进型哈夫曼编码) 10.6.2 二维编码(READ编码) 10.6.3 编码方式综述 10.6.4 行终码 10.6.5 页编码 10.7 传真高级编程 10.7.1 创建工程项目 10.7.2 关键代码分析
内容简介 《Shell脚本专家指南》旨在为Linux、Unix以及OSx系统管理员提供短小精悍且功能强大的shell实现解决方案,教会读者如何使用现有调试器调试shell脚本。全书分为3个部分:脚本技术基础、系统交互和高级技术、有用的脚本实例。主要内容包括如何使小到型的系统管理任务自动化,分析系统数据并编辑配置文件,使用bash和ksh等编写IAnux、Unix和OSX应用程序的脚本文件等。 《Shell脚本专家指南》面向高级的shell程序员,以及需要解决日常问题的系统管理员,但假定读者能够读懂一般的shell代码。 编辑推荐 《Shell脚本专家指南》是我多年从事系统管理员一职所积累的非常有用的脚本和技术集合。尽管这些脚本是从一名系统管理员的角度进行编写的。但你几乎可以为任何你能想得到的目的而重用它们。《Shell脚本专家指南》的所有代码或者是非常有用,或者是非常地独特(甚至可能会有一点与众不同)。不过其有些解决方案所用到的技术可能是你自己很难想出来的。 当我还在学习shell脚本编程的时候,我会经常参考一些由别人编写出来的实例,以进一步地扩展自己的视野。而结果往往是我发现一些正在困扰着自己的问题,我的同事和朋友们却早已发明了又酷又聪明的解决方案。因此,我便萌生了写这《Shell脚本专家指南》的念头,以易于理解的形式,介绍所有这些关键技术。 我写此书的目的。不是为了创作出一本shelI脚本编程的入门书。而是希望能够提供一些更具深度的内容。它的作用不仅仅是解释sheIl代码的内容,更在于讲述在大多数情况下如何以及为何使用某种特定的编程逻辑。这些脚本将帮助你大大提高编程技能。并提高你解决问题和选择解决方案的能力。《Shell脚本专家指南》的大部分脚本已经在以可靠性为关键因素的生产环境下,经历了多年的不断锤炼和改进。因此,《Shell脚本专家指南》对于那些希望在案头放一本案例精选的读者来说,将会是最佳的参考资料。 这里囊括了所有你迫切希望解决、却又无处发问的Shell脚本问题。 作者简介 作者:(美国)彼得(Ron Peters) 译者:李晓群 付弘宇 彼得(Ron Peters),在过去的15年大部分时间都在做系统管理员的工作。他曾是Intel公司的高级管理员,在那些日子里,他总是每周7天、每天24小时不停地工作,他也曾是一个专用于设计工作的大型计算机集群的首席管理员。他现在是Columbia运动服装公司的LinuxRJNIx系统管理员。他喜欢和家人在一起,喜欢修理他的道奇Challenger汽车,还喜欢玩美式壁球。 目录 第1部分 基本脚本编程技术 第1章 shell脚本的错误检测 1.1 shell跟踪选项 1.2 简单输出语句 1.3 根据调试层次控制输出 1.4 用函数简化错误检查 1.5 手动单步执行 第2章 标准函数库 2.1 库文件 2.2 一些有用的函数 2.3 使用库 第3章 日期和时间操作 3.1 用天数来计算日期 3.1.1 自从纪元以来的天数 3.1.2 以秒计算日期的其他方法 3.2 评估当前日期和时间 第4章 比较和测试 比较的基本原理 第5章 接受命令行选项、开关和参数 第6章 测试变量和设置默认值 6.1 设置默认值 6.2 变量替换 6.2.1 :=句法 6.2.2 =句法 6.2.3 :-句法 6.2.4 -句法 6.2.5 :?句法 6.2.6 ?句法 6.2.7 :+句法 6.2.8 +句法 第7章 非直接引用变量 7.1 用非直接变量监控日志文件 7.2 主监控循环 第8章 shell进程树 8.1 用数组实现进程树 8.2 用非直接变量实现进程树 8.3 用Bourneshell实现进程树 第9章 数据重定向 9.1 避免错误 9.2 普通重定向 9.3 访问用户指定的文件句柄 9.4 从shell访问描述符 第10章 管道输入读 10.1 逐行选项1 10.2 逐行选项2 10.3 逐行选项3 10.4 逐行选项4 10.5 直接管道读 10.6 逐字处理输入 第2部分 系统交互与高级技术 第11章 shell的数学 11.1 expr 11.2 bc 11.3 de 第12章 cron 12.1 crontab条目 12.2 环境问题 12.3 输出重定向 第13章 自链接脚本 第14章 对并行进程的数量控制 14.1 用ksh实现并行进程 14.2 用bash实现并行进程 第15章 命令行编辑和历史命令 15.1 建立vi编辑环境 15.1.1 bash 15.1.2 ksh 15.2 命令和文件补全 第16章 从命令行编写脚本 例子 第17章 用expect实现用户输出自动化 17.1 为expect脚本定制参数的shell脚本 17.2 让telnet的expect脚本自动执行 第18章 用户输入超时 18.1 手动实现超时 18.2 使用stty实现超时 18.3 一般的超时功能 第19章 即时键盘响应 第20章 目录的复制 20.1 使用cp 20.2 使用tar 20.3 使用find 20.4 使用。rsync 第21章 X显示环境概述 21.1 display变量 21.2 使用ssh处理X流量 21.3 通过第三方系统的X应用 21.4 用户-Profile项 21.5 根-Profile项 21.6 弹出一个临时的根窗口 第22章 X导航窗口 22.1 导航窗口的作用 22.2 建立导航 22.3 浏览窗口 第23章 命令行电子邮件附件 23.1 uuencode 23.2 MIME编码 第24章 单行文本处理 24.1 显示特殊域 24.2 指定域分隔符 24.3 简单的模式匹配 24.4 几个值的匹配域 24.5 确定域的数目 24.6 确定最后一个域 24.7 确定倒数第二个域 24.8 给awk传送变量 24.9 在一定条件下使用给awk传送的变量 24.10 显示域的范围(主要方法) 24.11 显示域的范围(备选方法) 24.12 使用awk确定串的长度 24.13 使用expr确定串的长度 24.14 使用awk显示一个子串 24.15 使用expr显示一个子串 24.16 使用sed进行简单的查找和替换 24.17 忽略文件的空行和注释行 24.18 使用sed进行双查找和替换 24.19 使用sed过滤行 24.20 使用egrep查找多个串 24.21 查找进程表的一个清理方法 24.22 使用awk进行列求和计算 24.23 使用awk产生随机数字 24.24 从shell产生随机数字 24.25 使用sed显示基于字符的域 24.26 特殊字符转义 24.27 使用grep从一个模式匹配返回末尾行 24.28 使用grep返回模式匹配之前的行 第25章 在适当的位置编辑文件 25.1 使用ed进行简单的查找和替换 25.2 使用ed查找和替换、分割 25.3 ed命令的例子 25.4 对一个文件的特殊字符转义 第26章 平面文件的变量赋值 第27章 读管道输入 第28章 使用cat的自由格式输出 第29章 自动交互处理 第3部分 有用的脚本实例 第30章 使用procmail自动处理邮件 30.1.procmailrc文件 30.2 使用示例 30.3 代码 第31章 进程管理监视器 第32章 管理文件的计数 32.1 文件计数监视器 32.2 测试文件数目的计算方法 第33章 从inittab执行进程 第34章 自动RCS 第35章 带颜色的/proc报告 第36章 口令老化通知 36.1 脚本初始化 36.2 开始处理 36.3 确定口令年龄 第37章 伪shadow文件 第38章 搭建Linux金系统 第39章 系统快照 39.1 快照脚本 39.2 快照升级 39.3 创建最新快照 39.4 最后的想法 第40章 删除大文件和日志滚动 第41章 核心探测器 第42章 网络适配器故障转移 42.1 检查网络 42.2 转换接口 附录A 测试开关 附录B 特殊参数 附录C shell脚本编程的其他资源 C.1 手册 C.2 图书 C.2.1 脚本编程图书 C.2.2 补充图书 C.3 shell资源 C.4.网络资源

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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