LPMAPISENDMAILW
コールバックシグネチャ
DWORD LPMAPISENDMAILW(
UINT_PTR lhSession,
UINT_PTR ulUIParam,
MapiMessageW* lpMessage,
DWORD flFlags,
DWORD ulReserved
);パラメーター
| フィールド | 型 | 説明 | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| lhSession | UINT_PTR | Simple MAPI セッションのハンドル、またはゼロ。 lhSession パラメーターの値がゼロの場合、MAPI はユーザーをログオンさせ、呼び出しの間だけ存在するセッションを作成します。この一時的なセッションは、既存の共有セッションである場合も、新しいセッションである場合もあります。必要に応じて、ログオン ダイアログ ボックスが表示されます。 | ||||||||||||||
| ulUIParam | UINT_PTR | 親ウィンドウのハンドル、またはゼロ。 ulUIParam パラメーターに親ウィンドウのハンドルを指定する場合、そのハンドルの型は HWND(ULONG_PTR にキャストしたもの)です。 呼び出し中にダイアログ ボックスが表示されない場合、ulUIParam は無視されます。 | ||||||||||||||
| lpMessage | MapiMessageW* | 送信するメッセージを格納した MAPISendMailW 構造体へのポインター。 メモ MAPISendMail 関数の場合、このパラメーターは MapiMessage 構造体を指します。
ヒント 受信者がいない状態でこの関数を呼び出す場合は、MAPI_DIALOG フラグまたは MAPI_DIALOG_MODELESS フラグを設定して、受信者の情報の入力をユーザーに求める必要があります。
この関数が受信者の情報をどのように扱うかの詳細については、解説 の 受信者情報の扱い を参照してください。 | ||||||||||||||
| flFlags | DWORD | オプション フラグのビットマスク。次のフラグを設定できます。
| ||||||||||||||
| ulReserved | DWORD | 予約済み。ゼロにする必要があります。 |
公式ドキュメント
Unicode メッセージを送信します。この関数は ANSI 関数 MAPISendMail を置き換えます。
Windows 7 以前の場合: Microsoft Windows Software Development Kit (SDK) for Windows 8 をインストールし、MAPISendMailHelper を使用してメッセージを送信してください。
特に明記しない限り、すべての情報は MAPISendMailW と MAPISendMail の両方に適用されます。
戻り値
型: ULONG
この関数は、次のいずれかの値を返します。
| リターン コード/値 | 説明 |
|---|---|
| 受信者が複数の受信者記述子構造体に一致し、かつ MAPI_DIALOG が設定されていませんでした。メッセージは送信されませんでした。 | |
| 指定された添付ファイルが見つかりませんでした。メッセージは送信されませんでした。 | |
| 指定された添付ファイルを開けませんでした。メッセージは送信されませんでした。 | |
| 指定された添付ファイルが大きすぎました。メッセージは送信されませんでした。 | |
| 受信者の種類が MAPI_TO、MAPI_CC、MAPI_BCC のいずれでもありませんでした。メッセージは送信されませんでした。 | |
| 1 つ以上の不特定のエラーが発生しました。メッセージは送信されませんでした。 | |
| 処理を続行するためのメモリが不足していました。メッセージは送信されませんでした。 | |
| 1 人以上の受信者が無効であるか、どのアドレスにも解決できませんでした。 | |
| 既定のログオンが存在せず、ログオン ダイアログ ボックスが表示された際にユーザーがログオンに失敗しました。メッセージは送信されませんでした。 | |
| メッセージ内のテキストが大きすぎました。メッセージは送信されませんでした。 | |
| 添付ファイルが多すぎました。メッセージは送信されませんでした。 | |
| 受信者が多すぎました。メッセージは送信されませんでした。 | |
|
MAPI_FORCE_UNICODE フラグが指定されていますが、Unicode がサポートされていません。
メモ この値を返すことができるのは MAPISendMailW のみです。
|
|
| 受信者がアドレス一覧に存在しませんでした。メッセージは送信されませんでした。 | |
| ユーザーがいずれかのダイアログ ボックスをキャンセルしました。メッセージは送信されませんでした。 | |
| 呼び出しは成功し、メッセージが送信されました。 |
解説(Remarks)
MAPISendMailW(Unicode)関数と MAPISendMail(ANSI)関数は、どちらもユーザーの操作の有無にかかわらず標準的なメッセージを送信します。いずれの関数もユーザーの操作なしに既定のサービス プロバイダーを開けるように、プロファイルが構成されている必要があります。
MAPISendMailW と MAPISendMail は、いずれもメッセージの送信に発信者(originator)型の受信者を必要としません。
クライアント アプリケーションは、受信者名の完全な一覧または部分的な一覧、件名のテキスト、添付ファイル、メッセージ本文を指定できます。情報が不足している場合、呼び出した関数(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 メンバーには、エントリ識別子、受信者名、アドレス、または名前とアドレスの組のいずれかを含めることができます。次の表は、関数がそれぞれの場合をどのように扱うかを示しています。| 受信者の情報 | 動作 |
|---|---|
| エントリ識別子 | 名前解決は行われません。名前とアドレスは無視されます。 |
| 名前 | Simple MAPI の解決規則を使用して名前が解決されます。 |
| アドレス | 名前解決は行われません。アドレスは、メッセージの配信と受信者名の表示の両方に使用されます。 |
| 名前とアドレス | 名前解決は行われません。名前は受信者名の表示にのみ使用されます。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)