VC 中调用默认邮件发送程序(Outlook)发送 指定附件的email

  1. // 支持多个附件同时发送, 附件文件名保存于File(std::vector<CString>)中
  2.     HINSTANCE hMAPI = ::LoadLibrary(_T("MAPI32.DLL"));        //Load Library
  3.     if (!hMAPI)
  4.     {
  5.         ::FreeLibrary(hMAPI);
  6.         return;
  7.     }
  8.     ULONG (PASCAL *SendMail) (ULONG, ULONG_PTR, MapiMessage*, FLAGS, ULONG);
  9.     (FARPROC&) SendMail = GetProcAddress(hMAPI, "MAPISendMail");//Get Function    
  10.     if(!SendMail)
  11.     {
  12.         ::FreeLibrary(hMAPI);
  13.         return;
  14.     }
  15.     MapiFileDesc* pfileDesc = new MapiFileDesc[m_selectedpicFile.size()];//Files of attachments
  16.     char** pszPath = new char*[m_selectedpicFile.size()];//files' paths    
  17.     char** pszFileName = new char*[m_selectedpicFile.size()];//files' filename
  18.     for (int i=0; i<FileNum; i++)
  19.     {
  20.         ZeroMemory(&pfileDesc[i], sizeof(MapiFileDesc));
  21.         pszPath[i] = new char[MAX_PATH];
  22.         ZeroMemory(pszPath[i], MAX_PATH);
  23.         pszFileName[i] = new char[MAX_PATH];
  24.         ZeroMemory(pszFileName[i], MAX_PATH);
  25.         int iRet = 0;
  26.         CString temp = Dir+_T("//")+File[i];//string for dir and string vector for filenames
  27.         iRet = WideCharToMultiByte(CP_ACP, 0, temp.GetBuffer(0), MAX_PATH, pszPath[i], MAX_PATH, NULL, NULL);
  28.         temp.ReleaseBuffer();
  29.         CHAR szFileName[MAX_PATH] = {0};
  30.         iRet = WideCharToMultiByte(CP_ACP, 0, temp.GetBuffer(0), MAX_PATH, pszFileName[i], MAX_PATH, NULL, NULL);
  31.         //  m_picstoreDir.ReleaseBuffer();
  32.         temp.ReleaseBuffer();
  33.         pfileDesc[i].nPosition = (ULONG) -1;
  34.         pfileDesc[i].lpszPathName = pszPath[i];
  35.         pfileDesc[i].lpszFileName = pszFileName[i];
  36.     }
  37.     MapiMessage message;
  38.     ZeroMemory(&message, sizeof(MapiMessage));
  39.     message.lpszSubject = "";
  40.     message.nFileCount = FileNum;
  41.     message.lpFiles = pfileDesc;
  42.     int nError = SendMail(0, (ULONG_PTR)m_hWnd, &message, MAPI_LOGON_UI | MAPI_DIALOG, 0);
  43.     delete [] pfileDesc;//delete
  44.     for (int i=0; i<m_selectedpicFile.size(); ++i)
  45.     {
  46.         delete [] pszPath[i];
  47.         delete [] pszFileName[i];
  48.     }
  49.     delete [] pszPath;
  50.     delete [] pszFileName;
  51.     ::FreeLibrary(hMAPI);// Free library

你可能感兴趣的:(vector,null,delete,Path,email,pascal)