CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

向outlook中添加邮件?

楼主kun_c_com()2006-03-20 16:27:21 在 VC/MFC / 基础类 提问

我想编程实现向outlook的收件箱,发件箱等添加一封邮件,找了好久也没有找到这方面的资料  
  那位大虾知道请指点我一下,谢谢! 问题点数:50、回复次数:5Top

1 楼moloto2004()回复于 2006-03-20 16:40:20 得分 50

Search   MAPI   ,you'll   find   itTop

2 楼kun_c_com()回复于 2006-03-20 16:52:40 得分 0

_MailItemPtr   pNewMail;  
   
  MAPIFolderPtr   pInbox;  
   
  _ItemsPtr   pInboxItems;  
   
  _NameSpacePtr     pNameSpace;  
   
  pNameSpace1   =   pApp->GetNamespace(L"MAPI");  
   
  pInbox   =   pNameSpace->GetDefaultFolder(olFolderInbox);  
   
  pInboxItems   =   pInbox->Items;  
   
  pNewMail   =   pInboxItems->Add();  
   
  pNewMail->Subject   =   "Save   Inbox";  
   
  pNewMail->SaveSentMessageFolder   =   pInbox;  
   
  pNewMail->Save();  
   
  pNameSpace1->Logoff();  
   
   
  我上面这么做为什么不对啊,每次都保存到了草稿箱?Top

3 楼moloto2004()回复于 2006-03-21 12:16:42 得分 0

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;  
  }  
   
  int   nFileCount   =   m_list.GetCount(); //有多少个附件需要发送  
   
  //分配内存保存附件信息 不能使用静态数组,因为不知道要发送附件的个数  
  MapiFileDesc*   pFileDesc   =   (MapiFileDesc*)malloc(sizeof(MapiFileDesc)   *   nFileCount);  
  memset(pFileDesc,0,sizeof(MapiFileDesc)   *   nFileCount);  
   
  //分配内存保存附件文件路径  
  TCHAR*   pTchPath   =   (TCHAR*)malloc(MAX_PATH   *   nFileCount);  
   
  CString   szText;  
  for(int   i   =   0;i   <   nFileCount;i++)  
  {  
  TCHAR*   p   =   pTchPath   +   MAX_PATH   *   i;  
  m_list.GetText(i,szText);  
  strcpy(p,szText);  
   
  (pFileDesc   +   i)->nPosition   =   (ULONG)-1;  
  (pFileDesc   +   i)->lpszPathName   =   p;  
  (pFileDesc   +   i)->lpszFileName   =   p;  
  }  
   
  //收件人结构信息  
  MapiRecipDesc   recip;  
  memset(&recip,0,sizeof(MapiRecipDesc));  
  recip.lpszAddress =   m_szEmailMAPI.GetBuffer(0);  
  recip.ulRecipClass   =   MAPI_TO;  
   
  //邮件结构信息  
  MapiMessage   message;  
  memset(&message,   0,   sizeof(message));  
  message.nFileCount =   nFileCount; //文件个数  
  message.lpFiles =   pFileDesc; //文件信息  
  message.nRecipCount   =   1; //收件人个数  
  message.lpRecips   =   &recip; //收件人  
  message.lpszSubject =   m_szSubject.GetBuffer(0); //主题  
  message.lpszNoteText=   m_szText.GetBuffer(0); //正文内容  
   
   
   
  //发送邮件  
  int   nError   =   lpfnSendMail(0,   0,  
  &message,   MAPI_LOGON_UI|MAPI_DIALOG,   0);  
   
  if   (nError   !=   SUCCESS_SUCCESS   &&   nError   !=   MAPI_USER_ABORT    
  &&   nError   !=   MAPI_E_LOGIN_FAILURE)  
  {  
  AfxMessageBox(AFX_IDP_FAILED_MAPI_SEND);  
  }  
   
   
   
  //不要忘了释放分配的内存  
  free(pFileDesc);  
  free(pTchPath);  
  FreeLibrary(hMod);Top

4 楼kun_c_com()回复于 2006-03-21 14:15:53 得分 0

我只想往inbox里添加一封邮件,并不是发送邮件Top

5 楼moloto2004()回复于 2006-03-23 14:36:22 得分 0

The   MAPISaveMail   function   saves   a   message   into   the   message   store.Top

相关问题

  • 如何编程实现向outlook express中添加邮件规则?
  • 如何用编程的方法添加一个新的邮件账户到Outlook Express 6.0
  • 发送邮件如何添加附件?
  • 请问怎样添加邮件帐户?
  • 有谁可以给一个向系统添加(注册)新用户(包括邮件信息)的例子?
  • outlook邮件求助
  • 在api中,用shellexecute可以调出邮件程序,如outlook express,但是能否同时把附件添加上呢?
  • 100分提问,想使用outlook application控制在程序中添加用户帐号,再连接服务器去接受邮件,应该怎么做.
  • 请问NMSMTP控件发邮件时,怎么添加附件?
  • 已经配置好了sendmail,如何添加邮件用户。

关键词

  • 邮件
  • 内存
  • 文件
  • nfilecount
  • pfiledesc
  • mapi
  • pnewmail
  • lpfnsendmail
  • mapifiledesc
  • pinbox

得分解答快速导航

  • 帖主:kun_c_com
  • moloto2004

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo