Unicode メッセージを送信します。 この関数は、ANSI 関数 MAPISendMail を置き換えます。
Windows 7 以前の場合: Windows 8 用 Microsoft Windows ソフトウェア開発キット (SDK) をインストールし、MAPISendMailHelper を使用してメッセージを送信します。
特に指定がない限り、すべての情報 は MAPISendMailW と MAPISendMail の両方に適用されます。
構文
MAPISENDMAILW Mapisendmailw;
ULONG Mapisendmailw(
[in] LHANDLE lhSession,
[in] ULONG_PTR ulUIParam,
[in] lpMapiMessageW lpMessage,
[in] FLAGS flFlags,
ULONG ulReserved
)
{...}
パラメーター
[in] lhSession
型: LHANDLE
Simple MAPI セッションまたは 0 へのハンドル。
lhSession パラメーターの値が 0 の場合、MAPI はユーザーにログオンし、呼び出しの期間中のみ存在するセッションを作成します。 この一時セッションには、既存の共有セッションまたは新しいセッションを指定できます。 必要に応じて、ログオン ダイアログ ボックスが表示されます。
[in] ulUIParam
型: ULONG_PTR
親ウィンドウ ハンドルまたは 0。
ulUIParam パラメーターに親ウィンドウ ハンドルが含まれている場合、ハンドルは HWND 型 (ULONG_PTRにキャスト) です。
呼び出し中にダイアログ ボックスが表示されない場合、 ulUIParam は無視されます。
[in] lpMessage
型: lpMapiMessageW
送信するメッセージを含む MAPISendMailW 構造体へのポインター。
| メンバー | 注記 |
|---|---|
| lpFiles | メッセージに添付ファイルがない場合は、このメンバーを NULL に 設定します。 |
| lpszMessageType | 対人メッセージを処理しないアプリケーションで使用されます。 アプリケーションが対人メッセージを処理する場合は、 lpszMessageType メンバーを NULL に設定するか、空の文字列を指すよう設定します。 |
| lpszSubject | NULL 値は、メッセージの件名にテキストがないことを意味します。 |
| lpszNoteText | NULL の値は、メッセージの本文にテキストがないことを意味します。 |
| lpRecips | NULL の値は、受信者がないことを意味します。 さらに、このメンバーが NULL の場合、 nRecipCount メンバーは 0 である必要があります。 |
| nRecipCount | 値が 0 の場合は、受信者がないことを意味します。 さらに、このメンバーが 0 の場合、 lpRecips メンバーは NULL である必要があります。 |
関数による受信者情報の処理方法の詳細については、「解説」の「受信者情報の処理」を参照してください。
[in] flFlags
型: FLAGS
オプション フラグのビットマスク。 次のフラグを設定できます。
| 価値 | Meaning |
|---|---|
|
受信者やその他の送信オプションをユーザーに求めるアプリケーション モーダル ダイアログ ボックスが表示されます。
MAPI_DIALOGもMAPI_DIALOG_MODELESSも設定されていない場合は、少なくとも 1 人の受信者を指定する必要があります。 |
|
次のバージョンの Office で Windows で使用できます。 受信者やその他の送信オプションをユーザーに求めるモードレス ダイアログ ボックスが表示されます。 MAPI_DIALOG_MODELESSが設定されている場合は、lhSession パラメーターを 0 に設定する必要があります。 それ以外の場合、このフラグが設定され、 lhSession が 0 でない場合、Outlook は例外を発生させます。 さらに、 MAPI_DIALOG_MODELESS が設定されている場合、 システムは MAPI_NEW_SESSION フラグを無視します。 MAPI_DIALOGもMAPI_DIALOG_MODELESSも設定されていない場合は、少なくとも 1 人の受信者を指定する必要があります。
先端Windows 7 以前でこのフラグを使用するには、Windows SDK for Windows 8 と次のバージョンの Office の両方がインストールされている必要があります。MAPISendMailW の代わりに MAPISendMailHelper を呼び出す必要があります。
|
|
必要に応じて、ユーザーにログオンを求めるダイアログ ボックスが表示されます。
MAPI_LOGON_UI フラグが設定されていない場合、クライアント アプリケーションはログオン ダイアログ ボックスを表示せず、ユーザーがログオンしていない場合はエラー値を返します。 lpszMessageID パラメーターが空の場合、MAPI_LOGON_UI フラグは無視されます。 |
|
環境の共有セッションを取得するのではなく、新しいセッションを作成しようとしました。
MAPI_NEW_SESSION フラグが設定されていない場合、関数は既存の共有セッションを使用します。
MAPI_NEW_SESSION フラグを設定し (共有セッションの使用を妨げている)、プロファイルにパスワードが必要な場合は、MAPI_LOGON_UI フラグも設定する必要があります。そうしないと、関数は失敗します。 クライアント アプリケーションでは、パスワードなしで既定のプロファイルを使用するか、パスワードなしで明示的なプロファイルを使用することで、このエラーを回避できます。 |
|
プロバイダーが Unicode をサポートしていない場合は、メッセージを ANSI に変換しないでください。
手記 このフラグは MAPISendMailW でのみ使用できます。
|
ulReserved
型: ULONG
引っ込み思案;は 0 にする必要があります。
戻り値
型: ULONG
この関数は、次のいずれかの値を返します。
| 戻りコード/値 | Description |
|---|---|
|
受信者が複数の受信者記述子構造と一致し、MAPI_DIALOGが設定されていません。 メッセージは送信されませんでした。 |
|
指定された添付ファイルが見つかりませんでした。 メッセージは送信されませんでした。 |
|
指定した添付ファイルを開けませんでした。 メッセージは送信されませんでした。 |
|
指定された添付ファイルが大きすぎます。 メッセージは送信されませんでした。 |
|
受信者の種類がMAPI_TO、MAPI_CC、またはMAPI_BCCされませんでした。 メッセージは送信されませんでした。 |
|
1 つ以上の未指定のエラーが発生しました。 メッセージは送信されませんでした。 |
|
続行するメモリが不足していました。 メッセージは送信されませんでした。 |
|
1 人以上の受信者が無効であるか、アドレスに解決されませんでした。 |
|
既定のログオンがなく、ログオン ダイアログ ボックスが表示されたときにユーザーが正常にログオンできませんでした。 メッセージは送信されませんでした。 |
|
メッセージ内のテキストが大きすぎます。 メッセージは送信されませんでした。 |
|
添付ファイルが多すぎます。 メッセージは送信されませんでした。 |
|
受信者が多すぎます。 メッセージは送信されませんでした。 |
|
MAPI_FORCE_UNICODE フラグが指定されており、Unicode はサポートされていません。
手記 この値は MAPISendMailW によってのみ返されます。
|
|
受信者がアドレス一覧に表示されませんでした。 メッセージは送信されませんでした。 |
|
ユーザーがいずれかのダイアログ ボックスを取り消しました。 メッセージは送信されませんでした。 |
|
呼び出しが成功し、メッセージが送信されました。 |
注釈
MAPISendMailW (Unicode) 関数と MAPISendMail (ANSI) 関数はどちらも、ユーザー操作の有無にかかわらず、標準メッセージを送信します。 プロファイルは、いずれかの関数がユーザーの操作を必要とせずに既定のサービス プロバイダーを開くことができるように構成する必要があります。
MAPISendMailW も MAPISendMail も、メッセージを送信するために送信元の種類の受信者を必要としません。
クライアント アプリケーションは、受信者名、件名テキスト、添付ファイル、またはメッセージ テキストの完全または部分的なリストを提供できます。 情報がない場合、呼び出す関数 ( MAPISendMailW または MAPISendMail) は、不足している情報をユーザーに求めることができます。
情報がない場合は、メッセージをそのまま送信するか、必要に応じて情報を確認して値を変更するようにユーザーに求めることができます。
MAPISendMailW と MAPISendMail は、メッセージ生成の柔軟性が向上するという点で MAPISendDocuments 関数とは異なります。
メッセージ テキスト
一部のクライアント アプリケーションでは、長すぎる件名行を切り捨てたり、復帰、改行、またはフォーム フィードが含まれている場合があります。各段落は、CR (0x0d)、LF (0x0a)、または CRLF ペア (0x0d0a) で終了する必要があります。 MAPISendMailW と MAPISendMail の両方が、必要に応じて行を折り返します。
テキストがシステムの制限を超えた場合、関数は MAPI_E_TEXT_TOO_LARGE 値を返します。
添付ファイル
メッセージごとの添付ファイルの数は、一部のメッセージング システムで制限される場合があります。 この制限を超えると、関数は失敗し、 MAPI_E_TOO_MANY_FILES 値を返します。添付ファイルは、関数が戻る前にメッセージにコピーされます。したがって、ファイルに対する後の変更は、メッセージの内容には影響しません。 ファイルは、コピー時に閉じる必要があります。
メッセージ テキストの範囲外の添付ファイルを表示しないでください。
受信者
一部のメッセージング システムでは、メッセージあたりの受信者の数を制限できます。 クライアント アプリケーションが、システム制限を超える受信者の数を示す NULL 以外の値を渡すと、関数は失敗し、 MAPI_E_TOO_MANY_RECIPIENTS 値を返します。クライアント アプリケーションが 1 つ以上のカスタム受信者にメッセージを送信し、それらの受信者の名前を解決しないようにする場合は、カスタム受信者のアドレスを指定する必要があります。
MAPISendMailW を呼び出すときに受信者のアドレスを指定するには、カスタム アドレスに受信者の情報を含む MapiRecipDescW 構造体の lpszAddress メンバーを設定する必要があります。 この MapiRecipDescW 構造体は、lpMessage パラメーターによって関数に渡される MapiMessageW 構造体の lpRecips メンバーに格納されている受信者の配列に含まれています。
関数からの正常な戻り値は、必ずしも受信者の検証を意味するとは限りません。 メッセージがすべての受信者に送信されていない可能性があります。 トランスポート プロバイダーによっては、受信者の検証が時間の長いプロセスになる場合があります。
受信者情報の処理
MapiMessageW または MapiMessage 構造体の lpRecips メンバーには、エントリ識別子、受信者の名前、アドレス、または名前とアドレスのペアを含めることができます。 次の表は、関数が各ケースを処理する方法を示しています。| 受信者情報 | アクション |
|---|---|
| エントリ識別子 | 名前解決なし。名前とアドレスは無視されます。 |
| 名前 | 簡易 MAPI 解決規則を使用して解決された名前。 |
| アドレス | 名前解決なし。アドレスは、メッセージ配信と受信者名の表示の両方に使用されます。 |
| 名前と住所 | 名前解決なし。受信者の名前を表示するためにのみ使用される名前。 |
Requirements
| Requirement | 価値 |
|---|---|
| サポートされる最小クライアント | Windows 8 [デスクトップ アプリのみ] |
| サポートされている最小のサーバー | Windows Server 2012 [デスクトップ アプリのみ] |
| ターゲット プラットフォーム の | ウィンドウズ |
| Header | mapi.h |