MAPISENDMAILW コールバック関数 (mapi.h)
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
単純な MAPI セッションまたは 0 を処理します。
lhSession パラメーターの値が 0 の場合、MAPI はユーザーにログを記録し、呼び出しの間だけ存在するセッションを作成します。 この一時的なセッションには、既存の共有セッションまたは新しいセッションを指定できます。 必要に応じて、ログオン ダイアログ ボックスが表示されます。
[in] ulUIParam
種類: ULONG_PTR
親ウィンドウ ハンドルまたは 0。
ulUIParam パラメーターに親ウィンドウ ハンドルが含まれている場合、ハンドルは HWND 型 (ULONG_PTRにキャスト) です。
呼び出し中にダイアログ ボックスが表示されない場合、 ulUIParam は無視されます。
[in] lpMessage
型: lpMapiMessageW
送信するメッセージを含む MAPISendMailW 構造体へのポインター。
メンバー | Notes |
---|---|
lpFiles | メッセージに添付ファイルがない場合は、このメンバーを NULL に 設定します。 |
lpszMessageType | 対人メッセージを処理しないアプリケーションで使用されます。 アプリケーションが対人メッセージを処理する場合は、 lpszMessageType メンバーを NULL に設定するか、空の文字列を指す値に設定します。 |
lpszSubject | NULL の値は、メッセージの件名にテキストがないことを意味します。 |
lpszNoteText | NULL の値は、メッセージの本文にテキストがないことを意味します。 |
lpRecips | NULL の値は、受信者がないことを意味します。 さらに、このメンバーが NULL の場合、 nRecipCount メンバーは 0 である必要があります。 |
nRecipCount | 0 の値は、受信者がないことを意味します。 さらに、このメンバーが 0 の場合、 lpRecips メンバーは NULL である必要があります。 |
関数が受信者情報を処理する方法の詳細については、「備考」の「受信者情報の処理」を参照してください。
[in] flFlags
種類: FLAGS
オプション フラグのビットマスク。 次のフラグを設定できます。
値 | 説明 |
---|---|
|
アプリケーション モーダル ダイアログ ボックスを表示して、受信者やその他の送信オプションをユーザーに求めるメッセージを表示する必要があります。
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 8 用 Windows SDK と次のバージョンの 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 メンバーには、エントリ識別子、受信者の名前、アドレス、または名前とアドレスのペアを含めることができます。 次の表は、関数が各ケースを処理する方法を示しています。受信者情報 | アクション |
---|---|
エントリ識別子 | 名前解決なし。名前とアドレスは無視されます。 |
Name | 簡易 MAPI 解決規則を使用して解決された名前。 |
Address | 名前解決なし。address は、メッセージ配信と受信者名の表示の両方に使用されます。 |
名前とアドレス | 名前解決なし。name 受信者名を表示するためにのみ使用されます。 |
要件
サポートされている最小のクライアント | Windows 8 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2012 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | mapi.h |