MAPI发送邮件

ttxxll 2007-06-12 10:47:28
这个程序怎么能实现正确发送的功能?里面有错误,编译能通过,还有就是某些地方没设置对吧,谢谢。MAPI发送邮件的讲解也看过,里边的细节还是不会设置。谢谢指点
(FARPROC&) lpfnMAPISendMail = GetProcAddress(hMAPILib,"MAPISendMail");

(FARPROC&) lpfnMAPILogon = GetProcAddress(hMAPILib,"MAPILogon");

(FARPROC&) lpfnMAPILogoff = GetProcAddress(hMAPILib,"MAPILogoff");

(FARPROC&) lpfnMAPIFreeBuffer = GetProcAddress(hMAPILib,"MAPIFreeBuffer");

(FARPROC&) lpfnMAPIResolveName = GetProcAddress(hMAPILib,"MAPIResolveName");

//开始接受信报处理
//(1)生成信报结构指针
pMessage = new(MapiMessage);
//分配内存
memset (pMessage,0,sizeof(MapiMessage));

//设置信报结构的各个域,将ulReserved设置为0
pMessage ->ulReserved = 0;

//设置信息类型指针,可以为空
pMessage ->lpszMessageType = NULL;
//设置信件标题(lpszSubject)
char subject[512] = "信息";
pMessage ->lpszSubject = subject;
//设置信件内容
char text[5000] = "信息";
pMessage ->lpszNoteText = text;
//设置指向这个消息的时间的指针
pMessage ->lpszDateReceived = NULL;
//设置标识消息所属会话线程的串的指针
pMessage ->lpszConversationID = NULL;
//设置flFlags标识
pMessage ->flFlags = MAPI_SENT;
//用一个指向MapiRecipDesc结构的指针设置发送者的信息(lpOriginator),可以设置为NULL
pMessage ->lpOriginator = NULL; //&Originator;
//设置接受者的数目,现在为1
pMessage ->nRecipCount = 1;
//设置接受者的信息(lpRecips)
char receiver[512] = "applelove911@163.com";
// strcpy(receiver, "applelove911@163.com");
char stmprec[512] = "smtp.163.com";
// strcat(stmprec, receiver);

MapiRecipDesc recipient =
{
0, MAPI_TO, receiver, stmprec, 0, NULL
};
pMessage ->lpRecips = &recipient;

//设置附件属性
MapiFileDesc FileInfo;
// char PathName[512] = "";
// char fileName[512] = "";
//设置MapiRecipDesc结构的各个域
FileInfo.ulReserved = 0;
FileInfo.flFlags = 0;
FileInfo.nPosition = sizeof(text)-1;
FileInfo.lpFileType = NULL;
FileInfo.lpszFileName = "00.49.jpg";
FileInfo.lpszPathName = "F:\\opencv\\视频文件\\";

pMessage ->nFileCount = 1;
pMessage ->lpFiles = &FileInfo;

//(2)登录到电子邮件对象,即建立会话
LHANDLE lhSession;
ULONG lResult = lpfnMAPILogon(0, NULL, NULL, 0, 0, &lhSession);
if(lResult != SUCCESS_SUCCESS)
{
AfxMessageBox("没成功的信报");
}
//(4)释放信报结构的内存空间
lpfnMAPIFreeBuffer(pMessage);
//(5)结束会话
lResult = lpfnMAPILogoff(lhSession, 0, 0, 0);

AfxMessageBox("成功发送信报");
...全文
367 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
chonker 2008-10-16
  • 打赏
  • 举报
回复
你连MAPIsendmail函数都没有
mengyinu 2008-05-23
  • 打赏
  • 举报
回复
刚刚设置了OUTLOOK了,可以登陆成功了..明天不知道还要遇到什么新的问题哦..
mengyinu 2008-05-23
  • 打赏
  • 举报
回复
虽然不是我的帖子,但是还是谢谢楼上的回答,我去看看去
arong1234 2008-05-23
  • 打赏
  • 举报
回复
没有真正搞过这个编程,不过根据我经验,你需要满足如下一些前提
1. 你必须安装了Outlook
2. 你的邮件服务器必须是Exchange?
3. 你必须配置Microsoft Exchange Server帐户类型
4. 打开outlook你应该能够登陆到你服务器
arong1234 2008-05-23
  • 打赏
  • 举报
回复
1. FileInfo.lpszPathName = "F:\\opencv\\视频文件\\00.49.jpg";
这个要包含文件名

2. 这种代码毫无帮助,你至少要打印错误信息是啥。不然谁知道为什么没成功信报啥意思?
if(lResult != SUCCESS_SUCCESS)
{
AfxMessageBox( "没成功的信报 ");
}



3. 你配置profile没有?打开Outlook能连到服务器么?你有自己邮件服务器么?MAPI是要连到自己服务器后才能发邮件的

mengyinu 2008-05-23
  • 打赏
  • 举报
回复
我也遇到了同样的问题,好郁闷,没有人回答。。。。
ttxxll 2007-06-15
  • 打赏
  • 举报
回复
实在是整不出来了
tomtom123 2007-06-15
  • 打赏
  • 举报
回复
UP
kfish 2007-06-14
  • 打赏
  • 举报
回复
自己的事情自己做~
-_-!!!
Stefine 2007-06-14
  • 打赏
  • 举报
回复
路过,没接触过
ttxxll 2007-06-13
  • 打赏
  • 举报
回复
谢谢,不要那么多,我想知道自己这个需要怎么改一下。信报创建不成功是怎么回事?
ttxxll 2007-06-13
  • 打赏
  • 举报
回复
接触编程的时间不长,现在要用,就是往程序里添加这个发邮件的功能。指定的接收者、指定的附件路径、指定的用户油箱,发送邮件的过程完全不需要手动操作的。谢谢。
kfish 2007-06-12
  • 打赏
  • 举报
回复

http://www.vckbase.com/code/listcode.asp?mclsid=9&sclsid=903

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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