- 介绍
- 如何使用mapi32.dll发送邮件
- 内部实现
- 相关文章
- 评论本文:
MAPI MAPISendMail
From: xuyibo.org Updated: 2020-08-30当更新时自动发送邮件通知。 | |
有什么建议或评论,可以贴一下。 | |
你的支持,让我们做的更好。 | |
这篇文章介绍XP下系统使用mapi32.dll发送邮件的实现细节,和相关注册表的位置。
当你在开始运行中输入:mailto:[email protected]?subject=hello email后,如果配置好了邮件发送设置,那么将自动弹出你的邮件客户端,比如在我的机器上:
你可能要问系统怎么知道改调用outlook express,而不是foxmail或office outlook,请看下面的对话框:
邮件设置保存在注册表:HKEY_LOCAL_MACHINESOFTWAREClientsMail下,其默认值为默认的电子邮件程序。
每一项的结构为:
|
发送邮件接口:
ULONG FAR PASCAL MAPISendMail( |
实现的时候先动态加载MAPI32.DLL,然后GetProcAddress到函数MAPISendMail,填充MapiMessage数据结构即可。
MAPISendMail动态的枚举可用的发送邮件的客户端程序,处于效率的考虑,MAPISendMail设置了一个全局变量:BOOL bHaveFoundValidMailApp;当这个变量为FALSE的时候说明前面执行过这个函数时没有找到邮件程序,直接退出,否则的话就开始枚举。我们首先要明白一下:mapi的结构非常类似NDIS的,就是上层构建一个抽象接口,根据需要调用合适的下面的相应接口。MAPISendMail依次从下面的文件中枚举的邮件客户端为:
omi9.dll |
在我的机器上,执行MAPISendMail最终将调用C:Program FilesOutlook Expressmsoe.dll中的导出函数MAPISendMail。
程序异常捕获库 – CrashRpt
注册表API简易教程
轻量级的浏览器控件HTMLLITE
在XP下使用Link控件
我的电脑软配置
让你的程序支持脱拽
背景透明的按钮