CMapi v1.01 - MAPI 实现






4.82/5 (20投票s)
2000 年 3 月 4 日

332918

3317
用于使用 Simple MAPI 发送邮件的 MFC 类。
引言
欢迎使用 CMapi
,这两个简单的类封装了使用 Simple MAPI 发送邮件的功能。
Simple MAPI 是 MAPI32.dll 导出的函数集,它允许您以独立于传输的方式发送和接收邮件。自 Windows 95 起(不包括 Windows CE),它是所有 Win32 操作系统的一个可选部分。与 Internet 邮件标准 SMTP 相比,MAPI 更侧重于企业环境,例如,MS Exchange Server 等产品广泛使用 MAPI。有适用于多种消息传输的传输提供程序,包括 Exchange Server、SMTP、Fax、cc:Mail CompuServe 等。为了能够指定不同的传输,MAPI 提供了配置文件(profile)的概念,这些配置文件可以通过“邮件”控制面板小程序进行设置。
目录
特点
- 简洁的 C++ 接口。
- 所有代码均符合 UNICODE 标准,并提供了相应的生成配置。尽管 Simple MAPI 只导出了其函数的 ASCII 版本,但该类内部会执行必要的转换。
- 如果需要,该代码可以在控制台应用程序中使用,或者在不弹出任何 Mapi 对话框的情况下使用。
- 该代码能优雅地处理客户端计算机上未安装 MAPI 的情况。在内部,该类会加载 DLL 并使用
GetProcAddress()
调用。
用法
- 要在您的代码中使用该类,只需将 cmapi.cpp 包含在您的项目中,并在需要调用这些类的任何模块中包含
#include cmapi.h
。 - 您的代码需要静态或动态地包含 MFC。
- 您可能希望将 mapi.h 添加到预编译头文件中以提高编译速度。生成消息会对此进行提示。
- 要查看该类如何工作,请查看 app.cpp 模块中的
InitInstance()
代码。
历史
V1.0 (1999 年 5 月 14 日)
- 首次公开发布
V1.01 (1999 年 12 月 5 日)
- 修复了当
CMapi
用于控制台应用程序时可能出现的潜在问题,该问题会导致ASSERT
。 - 修复了在进行交互式 MAPI 登录时,如果您关闭登录对话框可能出现的断言。
API 参考
API 由以下两个类及其方法和变量组成
CMapiMessage
- CMapiMessage::m_To
- CMapiMessage::m_CC
- CMapiMessage::m_BCC
- CMapiMessage::m_sSubject
- CMapiMessage::m_sBody
- CMapiMessage::m_Attachments
- CMapiMessage::m_AttachmentTitles
CMapiSession
- CMapiSession::CMapiSession
- CMapiSession::~CMapiSession
- CMapiSession::Logon
- CMapiSession::LoggedOn
- CMapiSession::Logoff
- CMapiSession::Send
- CMapiSession::MapiInstalled
- CMapiSession::GetLastError
- CMapiMessage::m_To
- 备注
m_To
的类型为CStringArray
,包含要发送电子邮件的收件人数组。每个收件人的名称可以是友好名称(友好名称是指在地址簿中有条目的收件人所知的名称,例如,“PJ at Work
”可能映射到使用 SMTP MAPI 传输发送给 pj.naughter@softech-telecom.com)或者可以是特定的传输地址,例如 SMTP:pjn@indigo.ie、FAX:34567 等。 - CMapiMessage::m_CC
- 备注
m_CC
的类型为CStringArray
,包含电子邮件将要抄送(Carbon Copied)的收件人数组。地址的指定方式与m_To
相同。 - CMapiMessage::m_BCC
- 备注
m_BCC
的类型为CStringArray
,包含电子邮件将要密送(Blind Carbon Copied)的收件人数组。地址的指定方式与m_To
相同。 - CMapiMessage::m_sSubject
- 备注
m_sSubject
的类型为CString
,是电子邮件的主题行。 - CMapiMessage::m_sBody
- 备注
m_sBody
的类型为CString
,是电子邮件的正文。 - CMapiMessage::m_Attachments
- 备注
m_Attachments
的类型为CStringArray
,是包含要作为附件添加到电子邮件中的文件名列表。 - CMapiMessage::m_AttachmentTitles
- 备注
m_AttachmentTitles
的类型为CStringArray
,包含收件人看到的文件附件的标题。如果将此数组留空,则标题将与文件名相同。例如,请查看 app.cpp 模块中的InitInstance()
代码,了解 autoexec.bat 附件如何具有标题 my autoexec.bat。 - CMapiSession::CMapiSession
- CMapiSession();
备注
类的标准构造函数。此类是主要的 MAPI 支持类,包含实际发送邮件消息的函数。
- CMapiSession::~CMapiSession
- ~CMapiSession();
备注
类的标准析构函数。在内部,如果已登录 MAPI,则会注销并卸载 MAPI DLL。
- CMapiSession::Logon
- BOOL Logon(const CString& sProfileName, const CString& sPassword = CString(), CWnd* pParentWnd = NULL);
返回值
如果成功登录到 MAPI,则返回
TRUE
,否则返回FALSE
。参数
sProfileName
-- 用于登录的 MAPI 配置文件名sPassword
-- 配置文件关联的密码(如果有)pParentWnd
-- 父窗口,指示如果显示对话框,则该对话框相对于
备注
登录到 MAPI 消息系统,与之创建会话。如果传递空配置文件名,则
Logon
会尝试通过显示正常的 MAPI 登录对话框进行交互式登录。将NULL
指定为父窗口(这是默认值)将使用AfxGetMainWnd()
返回的窗口。请注意,您必须先登录到 MAPI 才能发送消息。在内部,代码会进行ASSERT
以确保您不会忘记执行此操作。 - CMapiSession::LoggedOn
- BOOL LoggedOn() const;
备注
简单的访问器,如果此实例已登录到 MAPI,则返回
TRUE
,否则返回FALSE
。 - CMapiSession::Logoff
- BOOL Logoff();
返回值
如果成功从 MAPI 注销,则返回
TRUE
,否则返回FALSE
。备注
与
Logon
相对应的函数。在内部,此函数在CMapiSession
析构函数中被调用。 - CMapiSession::Send
- BOOL Send(CMapiMessage& message);
返回值
如果消息成功发送,则返回
TRUE
,否则返回FALSE
。参数
message
-- 要发送的消息
备注
使用当前登录的 MAPI 配置文件发送“
message
”参数中指定的邮件。 - CMapiSession::MapiInstalled
- BOOL MapiInstalled() const;
备注
简单的访问器,如果 MAPI 已安装并已正确初始化,可以供此实例使用,则返回
TRUE
。MAPI DLL 的实际加载由CMapiSession
构造函数在内部处理,这意味着您可以在构造CMapiSession
实例后的任何时间调用此函数。 - CMapiSession::GetLastError
- DWORD GetLastError() const;
返回值
此
CMapiSession
实例生成的最后一条 MAPI 错误。备注
由于该类使用 MAPI,而 MAPI 有其自己的一套与标准 Win32 方式(
GetLastError()
)不同的错误报告方式,因此此方法允许检索该值。MAPI 错误记录在您的 VC include 目录下的 MAPI.h 文件中。
计划增强功能
- 将代码打包成 OCX、COM 接口或 DLL,以便非 MFC 应用程序也能使用这些代码。
- 提供一个更好的示例应用程序。目前,它更像是一个测试程序,用于测试所提供类中的所有函数。
- 如果您有任何其他改进建议,请告诉我,以便我将其纳入下一个版本。
许可证
本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。
作者可能使用的许可证列表可以在此处找到。