用MAPISendMail发送邮件返回MAPI_E_FAILURE(2)

冉航--小虾米 2010-11-06 10:55:16
void CSendEMailDlg::OnSendMapi()
{
UpdateData(true);

//加载MAPI32.DLL动态库
HMODULE hMod = LoadLibrary("MAPI32.DLL");

if (hMod == NULL)
{
AfxMessageBox(AFX_IDP_FAILED_MAPI_LOAD);
return;
}

//获取发送邮件的函数地址
ULONG (PASCAL *lpfnSendMail)(ULONG, ULONG, MapiMessage*, FLAGS, ULONG);
(FARPROC&)lpfnSendMail = GetProcAddress(hMod, "MAPISendMail");

if (lpfnSendMail == NULL)
{
AfxMessageBox(AFX_IDP_INVALID_MAPI_DLL);
return;
}

//收件人结构信息
MapiRecipDesc recip;
memset(&recip,0,sizeof(MapiRecipDesc));
recip.lpszAddress = "gaoxiaoweiandy@163.com";
recip.ulRecipClass = MAPI_TO;

//邮件结构信息
MapiMessage message;
memset(&message, 0, sizeof(message));
message.nFileCount = 0; //文件个数
message.lpFiles = NULL; //文件信息
message.nRecipCount = 1;//收件人个数
message.lpRecips = &recip; //收件人
message.lpszSubject= "我的主题"; //主题
message.lpszNoteText= "我的征文"; //正文内容

//发送邮件
int nError = lpfnSendMail(0, 0,&message, MAPI_LOGON_UI|MAPI_DIALOG, 0);


//在这里nError总是为2:MAPI_E_FAILURE if (nError != SUCCESS_SUCCESS && nError != MAPI_USER_ABORT
&& nError != MAPI_E_LOGIN_FAILURE)
{
AfxMessageBox(AFX_IDP_FAILED_MAPI_SEND);
}


FreeLibrary(hMod);
}
...全文
298 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dbl5201314 2012-04-09
  • 打赏
  • 举报
回复
请问是怎么解决的?我遇到了也是返回失败的。那个试图以你的名义发送邮件在Outlook可以修改掉的
G_zhen 2011-01-10
  • 打赏
  • 举报
回复
请问你是如何解决的?我也遇到同样的问题了
冉航--小虾米 2010-11-06
  • 打赏
  • 举报
回复
好了,发送成功了,但是在发送前,OUTLOOK总提示,试图以你的名义发送邮件,可能是病毒,然后选择是否发送,选择是,才能发。能不能不提示这个框,直接发送就是了。
冉航--小虾米 2010-11-06
  • 打赏
  • 举报
回复
用outlook配置了一个邮件账户, 已经可以发送邮件了。但这段程序不能发送。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧