MAPI的方法: 但是会弹出提示框
void CSendEMailDlg::OnOK()
{
result = LoadLibrary("mapi32.dll"); //加载动态库
//获取函数指针
(FARPROC&)lpfnMAPILogon = GetProcAddress(result,"MAPILogon");
(FARPROC&)lpfnMAPISendMail = GetProcAddress(result,"MAPISendMail");
(FARPROC&)lpfnMAPIFreeBuffer= GetProcAddress(result,"MAPIFreeBuffer");
(FARPROC&)lpfnMAPILogoff= GetProcAddress(result,"MAPILogoff");
unsigned long a;
lpfnMAPILogon(0,NULL,NULL,0,0,&a); //开始一个会话
char* pcontext; //记录邮件正文
CString str;
m_content.GetWindowText(str);
pcontext = str.GetBuffer(0);
ULONG lresult ;
MapiMessage* m_messageInfo; //定义一个信息结构指针
m_messageInfo = new MapiMessage;
memset(m_messageInfo,0,sizeof(MapiMessage));//初始化m_messageInfo
CTime time = CTime::GetCurrentTime();//获取当前时间
CString ctime = time.Format("%y//%m//%d//%H");
char date[50];
strcpy(date,ctime);
CString subject ;
m_subject.GetWindowText(subject); //获取主题
CString receiver,temp;
m_ReceiverAddr.GetWindowText(temp);//获取收件人信息
receiver = temp.Left(temp.Find('@'));//获取用户账户
char addr1[100]; //记录用户账户
char addr2[100]; //记录SMTP服务器
strcpy(addr1,receiver);
receiver = "SMTP:"+temp;
strcpy(addr2,receiver);
MapiRecipDesc m_receiver = {0,MAPI_TO,addr1 ,addr2,0,NULL}; //定义接收者信息
m_messageInfo->lpszNoteText = pcontext; //设置邮件正文
m_messageInfo->ulReserved = 0; //保留,必须为0
m_messageInfo->lpszSubject = subject.GetBuffer(0); //设置主题
m_messageInfo->lpszDateReceived = date; //设置邮件发送时间
m_messageInfo->lpszConversationID = NULL; //邮件所属线程一个字符串指针
m_messageInfo->flFlags = MAPI_SENT;//邮件状态标记
m_messageInfo->lpOriginator = NULL; //发送者信息
m_messageInfo->nRecipCount = 1;//接收者人数
m_messageInfo->nFileCount = 0; //附件数
m_messageInfo->lpRecips = &m_receiver; //设置接收者信息
m_messageInfo->lpszMessageType = NULL; //邮件类型
lresult = lpfnMAPISendMail(a,0,m_messageInfo,MAPI_DIALOG ,0); //发送邮件
if (lresult != SUCCESS_SUCCESS)
{
MessageBox("操作失败.","提示",64);
}
else
{
MessageBox("邮件发送成功.","提示",64);
m_content.Clear();
}
delete m_messageInfo;
lpfnMAPIFreeBuffer(m_messageInfo);
lpfnMAPILogoff(a,0,0,0);
FreeLibrary(result);
}