2014-11-14 39 views
0

我在我的應用程序中實現了「打印和電子郵件」功能,並使用MAPISendMail啓動默認電子郵件客戶端,並預先選擇了一個文件附件。我希望能夠自動填充「收件人」字段,但我無法在MapiMessage結構中找到該選項。有主題,正文,附件的選項,但不適用於「收件人」字段。使用MAPISendMail填充目標電子郵件地址

有什麼方法可以使用MAPISendMail來填寫「收件人」字段嗎?

enter image description here

回答

1

我找到了答案,有在MapiMessage結構中的收件人字段。這裏的一些示例代碼我在http://www.experts-exchange.com/Programming/Microsoft_Development/A_1820-Sending-Email-with-MAPI.html找到,說明如何填寫收件人字段:

BOOL SendMail(LPCSTR lpszSubject, LPCSTR lpszTo, 
    LPCSTR lpszName, LPCSTR lpszText) 
{ 
    HINSTANCE hMAPI = ::LoadLibrary(L"mapi32.dll"); 
    LPMAPISENDMAIL lpfnMAPISendMail = 
     (LPMAPISENDMAIL)::GetProcAddress(hMAPI, "MAPISendMail"); 

    char szTo[MAX_PATH] = { 0 }; 
    strcat_s(szTo, lpszTo); 

    char szName[MAX_PATH] = { 0 }; 
    strcat_s(szName, lpszName); 

    MapiRecipDesc recipient[1] = { 0 }; 
    recipient[0].ulRecipClass = MAPI_TO; 
    recipient[0].lpszAddress = szTo; 
    recipient[0].lpszName = szName; 

    char szSubject[MAX_PATH] = { 0 }; 
    strcat_s(szSubject, lpszSubject); 

    char szText[MAX_PATH] = { 0 }; 
    strcat_s(szText, lpszText); 

    MapiMessage MAPImsg = { 0 }; 
    MAPImsg.lpszSubject = szSubject; 
    MAPImsg.lpRecips = recipient; 
    MAPImsg.nRecipCount = 1; 
    MAPImsg.lpszNoteText = szText; 

    ULONG nSent = lpfnMAPISendMail(0, 0, 
     &MAPImsg, MAPI_LOGON_UI | MAPI_DIALOG, 0); 

    FreeLibrary(hMAPI); 
    return (nSent == SUCCESS_SUCCESS || nSent == MAPI_E_USER_ABORT); 
} 
相關問題