📄 01_9_14_17.asp.html
字号:
if (lResult != SUCCESS_SUCCESS);</td></tr></table><table width=100% ><tr><td class=a14>
return false;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
如果调用成功,就可以访问MapiMessage结构了(使用pMessage):</td></tr></table><table width=100% ><tr><td class=a14>
pMessage- >ulReserved:0</td></tr></table><table width=100% ><tr><td class=a14>
pMessage- >lpszSubject:邮件标题</td></tr></table><table width=100% ><tr><td class=a14>
pMessage- >lpszNoteText:邮件信息</td></tr></table><table width=100% ><tr><td class=a14>
pMessage- >lpszMessageType:邮件类型</td></tr></table><table width=100% ><tr><td class=a14>
pMessage- >DateReceived:接收时间</td></tr></table><table width=100% ><tr><td class=a14>
pMessage- >lpszConversationID:邮件所属的会话线程ID</td></tr></table><table width=100% ><tr><td class=a14>
pMessage- >flFlags:其值见表4</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
表4:MapiMessage结构中的flFlags</td></tr></table><table width=100% ><tr><td class=a14>
值 意义</td></tr></table><table width=100% ><tr><td class=a14>
MAPI_RECEIPT_REQUESTED 接收通知被申请。</td></tr></table><table width=100% ><tr><td class=a14>
客户端应用程序在发送消息时设置该项。</td></tr></table><table width=100% ><tr><td class=a14>
MAPI_SENT 邮件已被发送。</td></tr></table><table width=100% ><tr><td class=a14>
MAPI_UNREAD 邮件是“未读”状态。</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
pMessage- >lpOriginator:指向MapiRecipDesc结构,包含发件人信息。</td></tr></table><table width=100% ><tr><td class=a14>
pMessage- >nRecipCount:信件者数目。</td></tr></table><table width=100% ><tr><td class=a14>
pMessage- >lpRecips:指向MapiRecipDesc结构数组,包含接收者信息。</td></tr></table><table width=100% ><tr><td class=a14>
pMessage- >nFileCount:附件数量。</td></tr></table><table width=100% ><tr><td class=a14>
pMessage- >lpFiles:指向MapiFileDesc结构数组,</td></tr></table><table width=100% ><tr><td class=a14>
每一个结构包含一个文件附件。</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
<td class=a14> <i>3-2-3 释放内存 </i></td>
</tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
在访问另一条信件以前应当释放内存,否则会出现内存泄漏。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
程序示例:</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
// 释放内存</td></tr></table><table width=100% ><tr><td class=a14>
lpfnMAPIFreeBuffer(pMessage);</td></tr></table><table width=100% ><tr>
<td class=a14> <i>3-2-4 定位到下一条信件</i></td>
</tr></table><table width=100% ><tr><td class=a14>
定位到下一条信件依然使用MAPIFindNext函数,</td></tr></table><table width=100% ><tr><td class=a14>
该函数声明及参数意义详见3-2-1节。下面示范如何定位到下一条信件。</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
程序示例:</td></tr></table><table width=100% ><tr><td class=a14>
// 定位到下一条没有阅读的信件</td></tr></table><table width=100% ><tr><td class=a14>
ULONG lResult = lpfnMAPIFindNext(lhSession, NULL, NULL, </td></tr></table><table width=100% ><tr><td class=a14>
pMessageID, MAPI_LONG_MSGID|MAPI_UNREAD_ONLY, </td></tr></table><table width=100% ><tr><td class=a14>
0, pMessageID);</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
<td class=a14> <i>3-3 发送电子邮件 </i></td>
</tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
发送电子邮件的一般步骤: </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
1. 建立MapiMessage结构对象 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
2. 调用MAPIResolveName使发送者名称合法 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
3. 添加附件 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
4. 调用MAPISendMail发送电子邮件 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
5. 调用MAPIFreeBuffer释放内存 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
下面详细分别详细阐述。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
<td class=a14> <i>3-3-1 建立MapiMessage结构对象 </i></td>
</tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
对于MapiMessage结构,3-2-2节已经做过介绍,下面一步步介绍如何设置其中的值: </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
1. 为MapiMessage对象分配内存: </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
MapiMessage message;</td></tr></table><table width=100% ><tr><td class=a14>
Memset(&message, 0, sizeof(message));</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
2. 将ulReserved设置为0: </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
message.ulReserved = 0;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
3. 设置信息类型指针lpszMessageType,可以为NULL: </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
message.lpszMessageType = NULL;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
4. 设置信件标题(lpszSubject): </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
char subject[512];</td></tr></table><table width=100% ><tr><td class=a14>
strcpy(subject, sSubject);</td></tr></table><table width=100% ><tr><td class=a14>
message.lpszSubject = subject;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
5. 设置信件内容: </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
char text[5000];</td></tr></table><table width=100% ><tr><td class=a14>
strcpy(text, sMessage);</td></tr></table><table width=100% ><tr><td class=a14>
message.lpszNoteText = text;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
6. 设置flFlags标识,详见3-2-2节中表4: </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
message.flFlags = MAPI_SENT;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
7. 用一个指向MapiRecipDesc结构的指针设置发送者信息(lpOriginator),或将其设置为NULL: </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
message.lpOriginator = NULL;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
8. 设置接收者数目(nRecipCount),可以是1或更多: </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
message.nRecipCount = 1;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
9. 设置接收者信息(lpRecips),详见3-3-2节 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
10. 设置附件数量(nFileCount) </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
11. 设置附件信息,详见3-3-3节 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
<td class=a14> <i>b3-3-2 正确设置接收者信息 </i></td>
</tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
设置接收者信息时,应当使用MAPIResolveName函数来为MapiRecipDesc结构对象分配内存,并返回一个指针,该指针将被保存在MapiMessage结构的lpRecips中。MAPIResolveName的函数声明如下: </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
ULONG FAR PASCAL MAPIResolveName(LHANDLE lhSession, </td></tr></table><table width=100% ><tr><td class=a14>
ULONG ulUIParam, LPTSTR lpszName, </td></tr></table><table width=100% ><tr><td class=a14>
FLAGS flFlags, ULONG ulReserved, </td></tr></table><table width=100% ><tr><td class=a14>
lpMapiRecipDesc FAR * lppRecip )</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
其中lppRecip即为前面提到的返回的指针。除flFlags外其余参数与前几个函数意义相同。flFlags的值详见表5。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
表5:MAPIResolveName中flFlags的值</td></tr></table><table width=100% ><tr><td class=a14>
值 意义</td></tr></table><table width=100% ><tr><td class=a14>
MAPI_AB_NOMODIFY 对话框为只读。如果MAPI_DIALOG被设置,</td></tr></table><table width=100% ><tr><td class=a14>
那么该项将被忽略。</td></tr></table><table width=100% ><tr><td class=a14>
MAPI_DIALOG 显示一个名称解决方案的对话框</td></tr></table><table width=100% ><tr><td class=a14>
MAPI_LOGON_UI 如果需要的话,将会显示仪个对话框让用户登录</td></tr></table><table width=100% ><tr><td class=a14>
MAPI_NEW_SESSION 新建一个会话</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
程序示例:</td></tr></table><table width=100% ><tr><td class=a14>
char recipient[512];</td></tr></table><table width=100% ><tr><td class=a14>
strcpy(recipient, sTo);</td></tr></table><table width=100% ><tr><td class=a14>
lResult = lpfnMAPIResolveName(lhSession, 0, recipient,</td></tr></table><table width=100% ><tr><td class=a14>
0, 0, &message.lpRecips);</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
<td class=a14> <i>3-3-3 添加附件 </i></td>
</tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
下面的程序示例将演示如何在电子邮件中包含附件。只有一点需要说明:MapiFileDesc结构中flFlags的值,详见表6。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
表6:MapiFileDesc结构中flFlags的值</td></tr></table><table width=100% ><tr><td class=a14>
值 意义</td></tr></table><table width=100% ><tr><td class=a14>
MAPI_OLE 附件是OLE对象。</td></tr></table><table width=100% ><tr><td class=a14>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -