CCmc v1.0 - CMC 实现





4.00/5 (1投票)
2000 年 3 月 4 日

73547

926
一个 MFC 类,用于封装使用 CMC 发送邮件。
引言
欢迎使用CCMC
,这是两个简单的类,用于封装使用 Common Messaging Calls (CMC) 接口发送邮件。CMC 是一个平台独立的 API,它提供了类似于 Windows 上简单 MAPI 的消息传递功能。对于 MFC 程序员来说,其他显而易见的 API 包括 SMTP 和 Simple MAPI。作者已在 http://indigo.ie/~pjn/smtp.html 和 http://indigo.ie/~pjn/cmapi.html 分别提供了这些功能的免费类。此类已在 MS 参考 CMC 实现上进行了独家测试,但应能与 Windows 9x、NT 和 2000 上的任何其他 CMC 实现正常工作。
特点 |
用法 |
历史 |
API 参考 |
计划增强功能 |
联系作者 |
特点
- 简洁的 C++ 接口。
- 所有代码都符合 UNICODE 标准,并为此提供了构建配置。尽管 Simple MAPI 只导出其函数的 ASCII 版本,但该类会在内部执行必要的转换。
- 如果需要,该代码可以在控制台应用程序中使用,或者在不弹出任何 CMC 对话框的情况下使用。
- 该代码能够优雅地处理客户端计算机上未安装 CMC 的情况。该类在内部加载 DLL 并使用
GetProcAddress()
调用。
用法
- 要在您的代码中使用该类,只需将 CCmc.cpp 包含在您的项目中,并在需要调用类的任何模块中
#include CCmc.h
。 - 您的代码需要静态或动态地包含 MFC。
- 您可能希望将 xcmc.h 添加到您的预编译头文件中以提高编译速度。构建消息将通知您这一点。
- 要查看该类的工作原理,请查看 app.cpp 模块中
InitInstance()
的代码。
历史
V1.0 (1999 年 11 月 25 日)- 首次公开发布。
API 参考
API 由以下 2 个类及其方法和变量组成CCMCMessage
CCMCMessage::m_To
CCMCMessage::m_CC
CCMCMessage::m_BCC
CCMCMessage::m_sSubject
CCMCMessage::m_sBody
CCMCMessage::m_Attachments
CCMCMessage::m_AttachmentTitles
CCMCSession
CCMCSession::CCMCSession
CCMCSession::~CCMCSession
CCMCSession::Logon
CCMCSession::LoggedOn
CCMCSession::Logoff
CCMCSession::Send
CCMCSession::CMCInstalled
CCMCSession::GetLastError
- CCMCMessage::m_To
- 备注
m_To 的类型为 CStringArray,包含要发送电子邮件的收件人数组。每个收件人的名称可以是友好名称(友好名称是具有地址簿条目的收件人所知的名称,例如 “PJ at Work”,这可能映射到使用 SMTP 传输发送到 pj.naughter@softech-telecom.com),也可以是特定的传输地址,例如 pjn@indigo.ie。 - CCMCMessage::m_CC
- 备注
m_CC 的类型为 CStringArray,包含将要抄送(Carbon Copied)的收件人数组。地址的指定方式与 m_To 相同。 - CCMCMessage::m_BCC
- 备注
m_BCC 的类型为 CStringArray,包含将要密送(Blind Carbon Copied)的收件人数组。地址的指定方式与 m_To 相同。 - CCMCMessage::m_sSubject
- 备注
m_sSubject 的类型为 CString,是电子邮件的主题行。 - CCMCMessage::m_sBody
- 备注
m_sBody 的类型为 CString,是电子邮件的正文。 - CCMCMessage::m_Attachments
- 备注
m_Attachments 的类型为 CStringArray,是作为电子邮件附件包含的文件名列表。 - CCMCMessage::m_AttachmentTitles
- 备注
m_AttachmentTitles 的类型为 CStringArray,包含每个文件附件在收件人眼中显示的标题。如果将此数组留空,则标题将与文件名相同。例如,请参阅 app.cpp 中 InitInstance 的代码,了解“autoexec.bat”附件如何显示标题“my autoexec.bat”。 - CCMCSession::CCMCSession
- CCMCSession();
备注
类的标准构造函数。此类是主要的 CMC 支持类,包含实际发送邮件消息的函数。 - CCMCSession::~CCMCSession
- ~CCMCSession();
备注
类的标准析构函数。在内部,如果已登录 CMC,则注销并卸载 CMC dll。 - CChooseDirDlg::Logon
- BOOL Logon(const CString& sProfileName, const CString& sPassword = CString(), CWnd* pParentWnd = NULL);
返回值
如果成功登录 CMC,则返回 TRUE,否则返回 FALSE。参数
- sProfileName -- 要用于登录的 CMC 配置文件名。
- sPassword -- 配置文件关联的密码(如果存在)。
- pParentWnd -- 父窗口,指示如果显示对话框,则它相对于此窗口是模态的。
备注
登录到 CMC 消息系统,与其创建会话。如果传递空配置文件名,则 Logon 将尝试通过显示常规 CMC 登录对话框进行交互式登录。将父窗口指定为 NULL(默认设置)将使用AfxGetMainWnd()
返回的窗口。请注意,您必须先登录 CMC 才能发送消息。内部代码将ASSERT
以确保您不会忘记这样做。 - CChooseDirDlg::LoggedOn
- BOOL LoggedOn() const;
备注
简单的访问器,如果此实例已登录 CMC,则返回 TRUE,否则返回 FALSE。 - CChooseDirDlg::Logoff
- BOOL Logoff();
返回值
如果成功从 CMC 注销,则返回 TRUE,否则返回 FALSE。备注
Logon 的对应函数。在 CCMCSession 析构函数中会调用此函数。 - CChooseDirDlg::Send
- BOOL Send(CCMCMessage& message);
返回值
如果消息成功发送,则返回 TRUE,否则返回 FALSE。参数
- message -- 要发送的消息。
备注
使用当前登录的 CMC 配置文件发送 message 参数中指定的消息。 - CChooseDirDlg::CMCInstalled
- BOOL CMCInstalled() const;
备注
简单的访问器,如果 CMC 已安装并已正确初始化,可供此实例使用,则返回 TRUE。CMC dll 的实际加载由 CCMCSession 构造函数内部处理,这意味着在构造 CCMCSession 实例后的任何时候调用此函数都是有效的。 - CChooseDirDlg::GetLastError
- CMC_return_code GetLastError() const;
返回值
此 CCMCSession 实例生成的最后一个 CMC 错误。备注
由于该类使用 CMC,而 CMC 有自己报告错误的方式(不同于标准的 Win32 方式(GetLastError)),因此此方法允许检索该值。CMC 错误记录在 VC include 目录的 xcmc.h 文件中。
计划增强功能
- 将代码打包成 OCX、COM 接口或 DLL,以便非 MFC 应用程序可以使用该代码。
- 提供一个更好的示例应用程序。目前,它非常像一个测试程序,测试了提供的类中的所有函数。
- 如果您有任何其他改进建议,请告诉我,以便我将其纳入下一个版本。
联系作者
PJ Naughter电子邮件:pjn@indigo.ie
网站:http://www.naughter.com
1999 年 11 月 25 日