MAPISENDMAILW コールバック関数 (mapi.h)

Unicode メッセージを送信します。 この関数は、ANSI 関数 MAPISendMail を置き換えます。

Windows 7 以前の場合: Windows 8 用 Microsoft Windows ソフトウェア開発キット (SDK) をインストールし、MAPISendMailHelper を使用してメッセージを送信します。

特に指定がない限り、すべての情報は MAPISendMailWMAPISendMail の両方に適用されます。

構文

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 構造体へのポインター。

メモMAPISendMail 関数の場合、このパラメーターは MapiMessage 構造体を指します。
 
関数を呼び出すときは、メッセージ構造メンバーに関する次の情報に注意してください。
メンバー Notes
lpFiles メッセージに添付ファイルがない場合は、このメンバーを NULL に 設定します。
lpszMessageType 対人メッセージを処理しないアプリケーションで使用されます。 アプリケーションが対人メッセージを処理する場合は、 lpszMessageType メンバーを NULL に設定するか、空の文字列を指す値に設定します。
lpszSubject NULL の値は、メッセージの件名にテキストがないことを意味します。
lpszNoteText NULL の値は、メッセージの本文にテキストがないことを意味します。
lpRecips NULL の値は、受信者がないことを意味します。 さらに、このメンバーが NULL の場合、 nRecipCount メンバーは 0 である必要があります。
nRecipCount 0 の値は、受信者がないことを意味します。 さらに、このメンバーが 0 の場合、 lpRecips メンバーは NULL である必要があります。
 
ヒント 関数を呼び出して受信者がいない場合は、 MAPI_DIALOG フラグまたは MAPI_DIALOG_MODELESS フラグを設定して、ユーザーに受信者情報の入力を求める必要があります。
 
MAPI_DIALOGまたはMAPI_DIALOG_MODELESSが設定されていない場合、構造体の nRecipCount メンバーと lpRecips メンバーは、メッセージ配信を成功させるために有効である必要があります。 クライアント アプリケーションでは、 flFlags メンバーを MAPI_RECEIPT_REQUESTED に設定して、読み取りレポートを要求できます。

関数が受信者情報を処理する方法の詳細については、「備考」の「受信者情報の処理」を参照してください。

[in] flFlags

種類: FLAGS

オプション フラグのビットマスク。 次のフラグを設定できます。

説明
MAPI_DIALOG
0x00000008
アプリケーション モーダル ダイアログ ボックスを表示して、受信者やその他の送信オプションをユーザーに求めるメッセージを表示する必要があります。

MAPI_DIALOGMAPI_DIALOG_MODELESSも設定されていない場合は、少なくとも 1 人の受信者を指定する必要があります。

MAPI_DIALOG_MODELESS
0x00000004 |MAPI_DIALOG
次のバージョンの Office で Windows で使用できます。

モードレス ダイアログ ボックスを表示して、受信者やその他の送信オプションをユーザーに求めるメッセージを表示する必要があります。

MAPI_DIALOG_MODELESSが設定されている場合は、lhSession パラメーターを 0 に設定する必要があります。 それ以外の場合、このフラグが設定され、 lhSession が 0 でない場合、Outlook は例外を発生させます。

さらに、 MAPI_DIALOG_MODELESS が設定されている場合、システムは MAPI_NEW_SESSION フラグを無視します。

MAPI_DIALOGMAPI_DIALOG_MODELESSも設定されていない場合は、少なくとも 1 人の受信者を指定する必要があります。

ヒントWindows 7 以前でこのフラグを使用するには、Windows 8 用 Windows SDK と次のバージョンの Office の両方がインストールされている必要があり、MAPISendMailW ではなく MAPISendMailHelper呼び出す必要があります。
 
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 に変換しないでください。
メモ このフラグは、 MAPISendMailW でのみ使用できます。
 

ulReserved

種類: ULONG

予約;は 0 である必要があります。

戻り値

種類: ULONG

この関数は、次のいずれかの値を返します。

リターン コード/値 Description
MAPI_E_AMBIGUOUS_RECIPIENT
21
受信者が複数の受信者記述子構造と一致し、MAPI_DIALOGが設定されていません。 メッセージが送信されませんでした。
MAPI_E_ATTACHMENT_NOT_FOUND
11
指定された添付ファイルが見つかりませんでした。 メッセージが送信されませんでした。
MAPI_E_ATTACHMENT_OPEN_FAILURE
12
指定した添付ファイルを開くことができませんでした。 メッセージが送信されませんでした。
MAPI_E_ATTACHMENT_TOO_LARGE
28
指定された添付ファイルが大きすぎます。 メッセージが送信されませんでした。
MAPI_E_BAD_RECIPTYPE
15
受信者の種類がMAPI_TO、MAPI_CC、またはMAPI_BCCされませんでした。 メッセージが送信されませんでした。
MAPI_E_FAILURE
2
1 つ以上の未指定のエラーが発生しました。 メッセージが送信されませんでした。
MAPI_E_INSUFFICIENT_MEMORY
5
続行するメモリが不足していました。 メッセージが送信されませんでした。
MAPI_E_INVALID_RECIPS
25
1 人以上の受信者が無効であるか、アドレスに解決されませんでした。
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
呼び出しが成功し、メッセージが送信されました。

解説

MAPISendMailW (Unicode) および MAPISendMail (ANSI) 関数はどちらも、ユーザー操作の有無にかかわらず、標準メッセージを送信します。 プロファイルは、いずれかの関数がユーザーの操作を必要とせずに既定のサービス プロバイダーを開くことができるように構成する必要があります。

MAPISendMailWMAPISendMail も、メッセージを送信するために発信元の種類の受信者を必要としません。

クライアント アプリケーションは、受信者名、件名テキスト、添付ファイル、またはメッセージ テキストの完全または部分的なリストを提供できます。 情報がない場合、呼び出す関数 ( MAPISendMailW または MAPISendMail) は、不足している情報の入力をユーザーに求めることができます。

情報がない場合は、メッセージをそのまま送信するか、必要に応じて情報を確認して値を変更するようにユーザーに求めることができます。

MAPISendMailWMAPISendMail は、メッセージ生成の柔軟性が向上するという点で、MAPISendDocuments 関数とは異なります。

メッセージ テキスト

一部のクライアント アプリケーションでは、長すぎる件名行を切り捨てたり、復帰、改行、またはフォーム フィードを含めることができます。

各段落は、CR (0x0d)、LF (0x0a)、または CRLF ペア (0x0d0a) で終了する必要があります。 MAPISendMailWMAPISendMail は、必要に応じて折り返し行を折り返します。

テキストがシステムの制限を超えた場合、関数は MAPI_E_TEXT_TOO_LARGE 値を返します。

添付ファイル

メッセージごとの添付ファイルの数は、一部のメッセージング システムで制限できます。 この制限を超えると、関数は失敗し、 MAPI_E_TOO_MANY_FILES 値を返します。

関数が戻る前に、添付ファイルがメッセージにコピーされます。したがって、ファイルに対する後の変更は、メッセージの内容には影響しません。 ファイルは、コピー時に閉じる必要があります。

メッセージ テキストの範囲外の添付ファイルを表示しないでください。

受信者

一部のメッセージング システムでは、メッセージあたりの受信者数を制限できます。 クライアント アプリケーションがシステム制限を超える受信者の数を示す NULL 以外の値を渡すと、関数は失敗し、 MAPI_E_TOO_MANY_RECIPIENTS 値を返します。

クライアント アプリケーションが 1 つ以上のカスタム受信者にメッセージを送信し、それらの受信者の名前を解決しないようにする場合は、カスタム受信者のアドレスを指定する必要があります。

MAPISendMailW を呼び出すときに受信者のアドレスを指定するには、受信者の情報を含む MapiRecipDescW 構造体の lpszAddress メンバーをカスタム アドレスに設定する必要があります。 この MapiRecipDescW 構造体は、lpMessage パラメーターによって関数に渡される MapiMessageW 構造体の lpRecips メンバーに格納されている受信者の配列に含まれています。

メモMAPISendMail を呼び出すときに受信者のアドレスを指定するには、MAPISendMailW の前の指示に従いますが、MapiRecipDesc および MapiMessage 構造体を置き換えます。

 

関数からの正常な戻り値は、必ずしも受信者の検証を意味するとは限りません。 メッセージがすべての受信者に送信されていない可能性があります。 トランスポート プロバイダーによっては、受信者の検証が長いプロセスになる場合があります。

受信者情報の処理

MapiMessageW または MapiMessage 構造体の lpRecips メンバーには、エントリ識別子、受信者の名前、アドレス、または名前とアドレスのペアを含めることができます。 次の表は、関数が各ケースを処理する方法を示しています。
受信者情報 アクション
エントリ識別子 名前解決なし。名前とアドレスは無視されます。
Name 簡易 MAPI 解決規則を使用して解決された名前。
Address 名前解決なし。address は、メッセージ配信と受信者名の表示の両方に使用されます。
名前とアドレス 名前解決なし。name 受信者名を表示するためにのみ使用されます。

要件

   
サポートされている最小のクライアント Windows 8 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2012 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー mapi.h

関連項目

MAPISendMailHelper

Windows SDK for Windows 8