ShellExecute(this,"open","mailto:[email protected][email protected]&Subject=test ","","", SW_SHOW );
此函数可以打开outlook express发mail,但是如何加附件???各位高手帮帮忙,谢谢!!!

解决方案 »

  1.   

    I don't think SheelExecute can do this....why u don't do it by yourself?see the link below,maybe useful:http://www.codeproject.com/internet/zsmtp.asp
      

  2.   

    and this is an easy way to accomplish ur job :http://www.codeproject.com/internet/csmtpconn.asptry and enjoy !
      

  3.   

    上面做法太复杂,可以用下面的列子。#include <MAPI.H>void sendmail(HWND hWnd)
    {
    typedef ULONG (FAR PASCAL * SENDFILES)(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG);HINSTANCE hinst = NULL;
    SENDFILES sendfile = NULL;
    MapiMessage mapimessage;
    lpMapiFileDesc lpMapiFiles = NULL;
    lpMapiFileDesc lpMapiTemp  = NULL;hinst = LoadLibrary("MAPI32.DLL");
    ASSERT ( NULL != hinst );
    if ( NULL == hinst )
    {
         if ( NULL != lpMapiFiles )
    {
    delete [] lpMapiFiles;
    lpMapiFiles = NULL;
    }
    return;
    }
    ...
    .........
    ....
    // fill data
    sendfile = (SENDFILES)GetProcAddress(hinst, "MAPISendMail");
    sendfile(NULL, (ULONG)hWnd, &mapimessage,  MAPI_DIALOG|MAPI_LOGON_UI|MAPI_NEW_SESSION,0);
    FreeLibrary(hinst);}
      

  4.   

    深入浅出ShellExecute 
    译者:徐景周(原作: Nishant S )Q: 如何打开一个应用程序?
    ShellExecute(this->m_hWnd,"open","calc.exe","","", SW_SHOW );

    ShellExecute(this->m_hWnd,"open","notepad.exe",
        "c:\\MyLog.log","",SW_SHOW );
    As you can see, I haven't passed the full path of the programs. 
     
    Q: 如何打开一个同系统程序相关连的文档?
    ShellExecute(this->m_hWnd,"open",
        "c:\\abc.txt","","",SW_SHOW );
     
    Q: 如何打开一个网页?
    ShellExecute(this->m_hWnd,"open",
        "http://www.google.com","","", SW_SHOW );
     
    Q: 如何激活相关程序,发送EMAIL?
    ShellExecute(this->m_hWnd,"open",
        "mailto:[email protected]","","", SW_SHOW );
     
    Q: 如何用系统打印机打印文档?
    ShellExecute(this->m_hWnd,"print",
        "c:\\abc.txt","","", SW_HIDE);
     
    Q: 如何用系统查找功能来查找指定文件?
    ShellExecute(m_hWnd,"find","d:\\nish",
        NULL,NULL,SW_SHOW);
     
    Q: 如何启动一个程序,直到它运行结束?
    SHELLEXECUTEINFO ShExecInfo = {0};
    ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
    ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
    ShExecInfo.hwnd = NULL;
    ShExecInfo.lpVerb = NULL;
    ShExecInfo.lpFile = "c:\\MyProgram.exe";             
    ShExecInfo.lpParameters = "";     
    ShExecInfo.lpDirectory = NULL;
    ShExecInfo.nShow = SW_SHOW;
    ShExecInfo.hInstApp = NULL;       
    ShellExecuteEx(&ShExecInfo);
    WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
    或:
    PROCESS_INFORMATION ProcessInfo; 
    STARTUPINFO StartupInfo; //This is an [in] parameter
    ZeroMemory(&StartupInfo, sizeof(StartupInfo));
    StartupInfo.cb = sizeof StartupInfo ; //Only compulsory field
    if(CreateProcess("c:\\winnt\\notepad.exe", NULL, 
        NULL,NULL,FALSE,0,NULL,
        NULL,&StartupInfo,&ProcessInfo))

        WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
        CloseHandle(ProcessInfo.hThread);
        CloseHandle(ProcessInfo.hProcess);
    }  
    else
    {
        MessageBox("The process could not be started...");
    }
     
     
    Q: 如何显示文件或文件夹的属性?
    SHELLEXECUTEINFO ShExecInfo ={0};
    ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
    ShExecInfo.fMask = SEE_MASK_INVOKEIDLIST ;
    ShExecInfo.hwnd = NULL;
    ShExecInfo.lpVerb = "properties";
    ShExecInfo.lpFile = "c:\\"; //can be a file as well
    ShExecInfo.lpParameters = ""; 
    ShExecInfo.lpDirectory = NULL;
    ShExecInfo.nShow = SW_SHOW;
    ShExecInfo.hInstApp = NULL; 
    ShellExecuteEx(&ShExecInfo);
      

  5.   

    用MailAPI就可以了,何必引入一大堆乱七八糟的类 MapiFileDesc attachment = {0,         // ulReserved, must be 0
                               0,         // no flags; this is a data file
                               (ULONG)-1, // position not specified
                               "c:\\makefile",  // pathname
                               "makefile",      // original filename
                               NULL};               // MapiFileTagExt unused
    // Create a blank message. Most members are set to NULL or 0 because
    // MAPISendMail will let the user set them.
    MapiMessage note = {0,            // reserved, must be 0
                        NULL,         // no subject
                        NULL,         // no note text
                        NULL,         // NULL = interpersonal message
                        NULL,         // no date; MAPISendMail ignores it
                        NULL,         // no conversation ID
                        0L,           // no flags, MAPISendMail ignores it
                        NULL,         // no originator, this is ignored too
                        0,            // zero recipients
                        NULL,         // NULL recipient array
                        1,            // one attachment
                        &attachment}; // the attachment structure
     
    err = my_func (0L,          // use implicit session.
                        0L,          // ulUIParam; 0 is always valid
                        &note,       // the message being sent
                        MAPI_DIALOG, // allow the user to edit the message
                        0L);         // reserved; must be 0
    if (err != SUCCESS_SUCCESS )
        printf("Unable to send the message\n");