Share via


MAPISendMailHelper 函式 (mapiunicodehelp.h)

接受 Unicode 訊息資訊,並使用 MAPISendMailW 傳送訊息,或視需要將訊息轉換成 ANSI,並使用 MAPISendMail 傳送訊息。 在 Windows 8 和更新版本上:直接呼叫MAPISendMailW以傳送訊息。

語法

ULONG MAPISendMailHelper(
  [in] LHANDLE        lhSession,
  [in] ULONG_PTR      ulUIParam,
  [in] lpMapiMessageW lpMessage,
  [in] FLAGS          flFlags,
  [in] ULONG          ulReserved
);

參數

[in] lhSession

簡單MAPI會話或零的句柄。

如果 lhSession 參數的值為零,MAPI 會登入使用者,並建立只在呼叫期間存在的會話。 此暫存會話可以是現有的共享工作階段或新的工作階段。 如有必要,會顯示登入對話方塊。

[in] ulUIParam

父視窗句柄或零。

如果 ulUIParam 參數的值為零且顯示對話框,對話框即為應用程式強制回應。 如果 ulUIParam 參數包含父視窗句柄,則其類型為 HWND (轉換成 ULONG_PTR) 。 如果在呼叫期間未顯示任何對話框, 則會忽略 ulUIParam

[in] lpMessage

MAPISendMailW 結構的指標,其中包含要傳送的訊息。

如果已註冊的郵件提供者要求訊息使用 ANSI 編碼, MAPISendMailHelper 會將此訊息轉換為 ANSI MapiMessage 結構,呼叫 MAPISendMail 來傳送訊息。

當您呼叫 函式時,請注意下列訊息結構成員的相關信息:

成員 備註
lpFiles 當郵件沒有檔案附件時,請將此成員設定為 NULL
lpszMessageType 由未處理個人訊息的應用程式所使用。 如果您的應用程式處理個人訊息,請將 lpszMessageType 成員設定為 NULL ,或將它設定為指向空字串。
lpszSubject NULL 值表示訊息的主旨沒有文字。
lpszNoteText NULL 值表示訊息本文中沒有文字。
lpRecips NULL 值表示沒有收件者。 此外,當此成員為 NULL 時, nRecipCount 成員必須是零。
nRecipCount 值為零表示沒有收件者。 此外,當這個成員為零時, lpRecips 成員必須是 NULL
 
提示 當您呼叫 函式且沒有任何收件者時,您必須設定 MAPI_DIALOG 旗標或 MAPI_DIALOG_MODELESS 旗標,以提示使用者提供收件者資訊。
 
如果未設定 MAPI_DIALOGMAPI_DIALOG_MODELESS ,結構的 nRecipCountlpRecips 成員必須有效,才能成功傳遞訊息。 用戶端應用程式可以將 flFlags 成員設定為 MAPI_RECEIPT_REQUESTED 以要求讀取報表。

如需函式如何處理收件者資訊的詳細資訊,請參閱處理MAPISendMailW中的收件者資訊

[in] flFlags

選項旗標的位掩碼。 您可以設定下列旗標。

意義
MAPI_DIALOG
0x00000008
應該會顯示對話框,以提示使用者輸入收件者和其他傳送選項。

如果未 設定MAPI_DIALOGMAPI_DIALOG_MODELESS ,則必須至少指定一個收件者。

MAPI_DIALOG_MODELESS
0x00000004 |MAPI_DIALOG
在 Windows 7 或更早版本上提供下一版 Office: 應該會顯示無模式對話方塊,以提示使用者輸入收件者和其他傳送選項。

如果設定MAPI_DIALOG_MODELESS,lhSession 參數應該設定為零。 否則,如果設定此旗標且 lhSession 不是零,Outlook 將會引發例外狀況。

此外,如果已設定 MAPI_DIALOG_MODELESS ,系統會忽略 MAPI_NEW_SESSION 旗標。

如果未 設定MAPI_DIALOGMAPI_DIALOG_MODELESS ,則必須至少指定一個收件者。

MAPI_LOGON_UI
0x00000001
應該顯示對話框,以提示用戶視需要登入。

如果未設定 MAPI_LOGON_UI 旗標,用戶端應用程式就不會顯示登入對話框,而且如果使用者未登入,則會傳回錯誤值。

如果 lpszMessageID 參數是空的,則會忽略 MAPI_LOGON_UI 旗標。

MAPI_NEW_SESSION
0x00000002
嘗試建立新的工作階段,而不是取得環境的共享工作階段。 如果未設定 MAPI_NEW_SESSION 旗標,函式會使用現有的共享會話。

如果您設定 MAPI_NEW_SESSION 旗標 (防止使用共用會話) ,而且配置檔需要密碼,您也必須設定 MAPI_LOGON_UI 旗標,否則函式將會失敗。 用戶端應用程式可以使用沒有密碼的預設配置檔,或使用不含密碼的明確配置檔來避免此失敗。

MAPI_FORCE_UNICODE
0x00040000
如果提供者不支援 Unicode,請勿將訊息轉換為 ANSI。

[in] ulReserved

保留;必須是零。

傳回值

此函式會傳回下列其中一個值。

傳回碼/值 Description
MAPI_E_AMBIGUOUS_RECIPIENT
21
收件者符合一個以上的收件者描述項結構,且未設定MAPI_DIALOG。 未傳送任何訊息。
MAPI_E_ATTACHMENT_NOT_FOUND
11
找不到指定的附件。 未傳送任何訊息。
MAPI_E_ATTACHMENT_OPEN_FAILURE
12
無法開啟指定的附件。 未傳送任何訊息。
MAPI_E_BAD_RECIPTYPE
15
收件者的類型不是MAPI_TO、MAPI_CC或MAPI_BCC。 未傳送任何訊息。
MAPI_E_FAILURE
2
發生一或多個未指定的錯誤。 未傳送任何訊息。
MAPI_E_INSUFFICIENT_MEMORY
5
記憶體不足,無法繼續。 未傳送任何訊息。
MAPI_E_INVALID_RECIPS
25
一或多個收件者無效或無法解析為任何位址。
MAPI_E_LOGIN_FAILURE
3
沒有預設登入,而且使用者無法在顯示登入對話框時成功登入。 未傳送任何訊息。
MAPI_E_TEXT_TOO_LARGE
18
訊息中的文字太大。 未傳送任何訊息。
MAPI_E_TOO_MANY_FILES
9
檔案附件太多。 未傳送任何訊息。
MAPI_E_TOO_MANY_RECIPIENTS
10
收件者太多。 未傳送任何訊息。
MAPI_E_UNICODE_NOT_SUPPORTED
27
指定MAPI_FORCE_UNICODE旗標,不支援 Unicode。
注意 只有在呼叫 MAPISendMailW 來傳送訊息時,才能傳回此值。
 
MAPI_E_UNKNOWN_RECIPIENT
14
收件者未出現在通訊清單中。 未傳送任何訊息。
MAPI_E_USER_ABORT
1
使用者取消了其中一個對話框。 未傳送任何訊息。
SUCCESS_SUCCESS
0
呼叫成功且已傳送訊息。

備註

如需MAPI傳送郵件函式的詳細資訊,請參閱 MAPISendMailW

規格需求

需求
目標平台 Windows
標頭 mapiunicodehelp.h
Dll Mapi32.dll

另請參閱

MAPISendMailW

Windows 8 的 Windows SDK