次の方法で共有


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

Simple MAPI セッションまたは 0 へのハンドル。

lhSession パラメーターの値が 0 の場合、MAPI はユーザーにログオンし、呼び出しの期間中のみ存在するセッションを作成します。 この一時セッションには、既存の共有セッションまたは新しいセッションを指定できます。 必要に応じて、ログオン ダイアログ ボックスが表示されます。

[in] ulUIParam

型: ULONG_PTR

親ウィンドウ ハンドルまたは 0。

ulUIParam パラメーターに親ウィンドウ ハンドルが含まれている場合、ハンドルは HWND 型 (ULONG_PTRにキャスト) です

呼び出し中にダイアログ ボックスが表示されない場合、 ulUIParam は無視されます。

[in] lpMessage

型: lpMapiMessageW

送信するメッセージを含む MAPISendMailW 構造体へのポインター。

手記MAPISendMail 関数の場合、このパラメーターは MapiMessage 構造体を指します。
 
関数を呼び出すときは、メッセージ構造メンバーに関する次の情報に注意してください。
メンバー 注記
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

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

価値 Meaning
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 SDK for Windows 8 と次のバージョンの 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
二十五
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
二十七
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 メンバーには、エントリ識別子、受信者の名前、アドレス、または名前とアドレスのペアを含めることができます。 次の表は、関数が各ケースを処理する方法を示しています。
受信者情報 アクション
エントリ識別子 名前解決なし。名前とアドレスは無視されます。
名前 簡易 MAPI 解決規則を使用して解決された名前。
アドレス 名前解決なし。アドレスは、メッセージ配信と受信者名の表示の両方に使用されます。
名前と住所 名前解決なし。受信者の名前を表示するためにのみ使用される名前。

Requirements

Requirement 価値
サポートされる最小クライアント Windows 8 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2012 [デスクトップ アプリのみ]
ターゲット プラットフォーム ウィンドウズ
Header mapi.h

こちらも参照ください

MAPISendMailHelper

Windows SDK for Windows 8