65.9K
CodeProject 正在变化。 阅读更多。
Home

CCmc v1.0 - CMC 实现

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (1投票)

2000 年 3 月 4 日

viewsIcon

73547

downloadIcon

926

一个 MFC 类,用于封装使用 CMC 发送邮件。

  • 下载源文件 - 12 KB
  • 引言

    欢迎使用 CCMC,这是两个简单的类,用于封装使用 Common Messaging Calls (CMC) 接口发送邮件。

    CMC 是一个平台独立的 API,它提供了类似于 Windows 上简单 MAPI 的消息传递功能。对于 MFC 程序员来说,其他显而易见的 API 包括 SMTP 和 Simple MAPI。作者已在 http://indigo.ie/~pjn/smtp.htmlhttp://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 日


    © . All rights reserved.