实际上,本文的设计,所使用的只是 simple mapi,可以把它看作是mapi(messaging application programming interface)的一个子集。不过大多数时候,simple mapi提供的功能已经足够使用。本文阐述了一个简单的,用于发送一个带附件的邮件的功能实现。如果需要更复杂的功能,我认为还是老老实实封装smtp和pop3比较好
二、simple mapi 介绍
simple mapi 包括一组很容易使用的函数以及相关的数据结构,可以在c/c++、vb等多种语言中使用。本文是基于vc设计的。
实现一个完整的邮件发送过程,只需要一个函数“mapisendmail()”,完整函数表及相关介绍参查阅msdn library->platform sdk->messaging and collaboration services。
mapi 与邮件系统关系密切,要能够使用mapi的功能,系统必须安装有支持 mapi 的邮件系统,比如outlook、outlook express、eudora、netscape等. 在这里不得不提一下,使用非常广泛的 foxmail (5.0版本)似乎并不支持 mapi,不过并没有深入研究,如果有哪位高手发现实际上是支持的,麻烦告知我如何做。
windows提供了一个文件 mapi.h,包含所有的相关数据类型的定义。
三、功能的设计
我需要实现如下功能:可定制一封邮件,包括至少一个收件人,可选项目有标题、正文、若干抄送人、密件抄送人、附件。能够根据需要选择自动发送(无用户干预),或弹出邮件编写窗口。
为了便于使用和扩展,我用了一个cla