用Visual C++编写电子邮件程序
2010-09-29 20:03:32 来源:WEB开发网3-3-3 添加附件
下面的程序示例将演示如何在电子邮件中包含附件。只有一点需要说明:MapiFileDesc结构中flFlags的值,详见表6。
表6:MapiFileDesc结构中flFlags的值
值 意义
MAPI_OLE 附件是OLE对象。
MAPI_OLE_STATIC 附件是静态OLE对象。
0 附件将被视为数据文件
程序示例:
// 设置附件信息
CString sPath, sFileName;
MapiFileDesc FileInfo;
char path[512];
char filename[512];
if (sAttachment == “”)
message.nFileCount = 0;
else
{
int nPos = sAttachment.ReverseFind(‘\’);
if (nPos == -1)
{
sPath = sAttachment;
}
else
{
sPath = sAttachment;
sFilename = sAttachment.Mid(nPos +1);
}
strcpy(path, sPath);
strcpy(filename, sFilename);
message.nFileCount = 1;
FileInfo.ulReserved = 0;
FileInfo.flFlags = 0;
FileInfo.nPosition = sMessage.GetLength() –1;
FileInfo.lpszPathName = path;
FileInfo.lpszFileName = filename;
FileInfo.lpFileType = NULL;
message.lpFiles = & m_FileInfo;
}
3-3-4 发送电子邮件
使用MAPISendMail发送电子邮件,其声明如下:
ULONG FAR PASCAL MAPISendMail (LHANDLE lhSession,
ULONG ulUIParam, lpMapiMessage lpMessage,
FLAGS flFlags, ULONG ulReserved )
其中,flFlags的允许值为MAPI_DIALOG、MAPI_LOGON_UI和MAPI_NEW_SESSION,其意义与前几个函数中同名标识意义相同。
程序示例:
lResult = lpfnMAPISendMail(0, 0, &m_message, 0, 0);
3-3-5 释放内存
程序示例:
lpfnMAPIFreeBuffer(m_message.lpRecips);
四、小结
本文比较具体的介绍并演示了编写一个电子邮件程序的核心部分,如果读者要编写电子邮件程序,还需要进行的处理:
1. 加上错误处理代码。受篇幅限制,本文的程序示例中只有两处为错误处理留空,比较它们的异同。电子邮件程序是非常容易出错的,因此除这两处外要在主要函数调用完成后都加上错误处理,或使用try throw catch块处理例外。
2. 加上UI处理。
另外,本文所阐述的方法比较简单易行,事实上,有关电子邮件的程序远比这复杂得多,因此读者若需要编写一个功能强大的电子邮件程序,需要精通MAPI和SMTP/POP3等协议;如果读者要编写一个电子邮件服务器,那么不妨在精通MAPI和SMTP/POP3之后,阅读一些有关Exchange Server的资料。
- ››Visual Basic 2008 数学函数
- ››Visual Studio2005中Smart Device的问题
- ››Visual Studio 中根据数据库字段动态生成控件
- ››编写Linux定时处理程序
- ››Visual Studio 11全新黑色主题
- ››Visual Studio 2011 Beta新特性(一):安装VS201...
- ››编写Linux系统下Daemon程序的方法步骤
- ››电子邮件解析android.net.MailTo类
- ››Visual Studio自定义调试窗体两个小技巧
- ››Visual Studio 2005 Team Edition for Database P...
- ››Visual C#两分钟搭建BHO IE钩子
- ››编写组件,使用JavaScript更新UpdatePanel
更多精彩
赞助商链接