MAPISENDMAILW-Rückruffunktion (mapi.h)

Sendet eine Unicode-Nachricht. Diese Funktion ersetzt die ANSI-Funktion MAPISendMail.

Unter Windows 7 und früher: Installieren Sie das Microsoft Windows Software Development Kit (SDK) für Windows 8 , und verwenden Sie MAPISendMailHelper , um eine Nachricht zu senden.

Alle Informationen gelten sowohl für MAPISendMailW als auch für MAPISendMail , sofern nicht anders angegeben.

Syntax

MAPISENDMAILW Mapisendmailw;

ULONG Mapisendmailw(
  [in] LHANDLE lhSession,
  [in] ULONG_PTR ulUIParam,
  [in] lpMapiMessageW lpMessage,
  [in] FLAGS flFlags,
       ULONG ulReserved
)
{...}

Parameter

[in] lhSession

Typ: LHANDLE

Handle mit einer einfachen MAPI-Sitzung oder null.

Wenn der Wert des lhSession-Parameters 0 ist, protokolliert MAPI den Benutzer und erstellt eine Sitzung, die nur für die Dauer des Aufrufs vorhanden ist. Diese temporäre Sitzung kann eine vorhandene freigegebene Sitzung oder eine neue sitzung sein. Bei Bedarf wird das Anmeldedialogfeld angezeigt.

[in] ulUIParam

Typ: ULONG_PTR

Übergeordnetes Fensterhandle oder null.

Wenn der ulUIParam-Parameter das übergeordnete Fensterhandle enthält, ist das Handle vom Typ HWND (in eine ULONG_PTR umgewandelt).

Wenn während des Anrufs kein Dialogfeld angezeigt wird, wird ulUIParam ignoriert.

[in] lpMessage

Typ: lpMapiMessageW

Zeiger auf eine MAPISendMailW-Struktur , die die zu sendende Nachricht enthält.

Hinweis Für die MAPISendMail-Funktion verweist dieser Parameter auf eine MapiMessage-Struktur .
 
Wenn Sie die Funktion aufrufen, beachten Sie die folgenden Informationen zu Elementen der Nachrichtenstruktur:
Mitglied Hinweise
lpFiles Legen Sie dieses Element auf NULL fest, wenn die Nachricht keine Dateianlagen enthält.
lpszMessageType Wird von Anwendungen verwendet, die keine zwischenmenschlichen Nachrichten verarbeiten. Wenn Ihre Anwendung zwischenmenschliche Nachrichten verarbeitet, legen Sie den lpszMessageType-Member auf NULL fest, oder legen Sie ihn so fest, dass er auf eine leere Zeichenfolge verweist.
lpszSubject Ein Wert von NULL bedeutet, dass kein Text für den Betreff der Nachricht vorhanden ist.
lpszNoteText Ein Wert von NULL bedeutet, dass im Textkörper der Nachricht kein Text vorhanden ist.
lpRecips Ein Wert von NULL bedeutet, dass es keine Empfänger gibt. Darüber hinaus muss der nRecipCount-Member null sein, wenn dieser Member NULL ist.
nRecipCount Ein Wert von null bedeutet, dass es keine Empfänger gibt. Wenn dieses Element 0 ist, muss das lpRecips-Elementaußerdem NULL sein.
 
Tipp Wenn Sie die Funktion aufrufen und keine Empfänger vorhanden sind, müssen Sie entweder das MAPI_DIALOG-Flag oder das MAPI_DIALOG_MODELESS-Flag festlegen, um den Benutzer zur Eingabe von Empfängerinformationen aufzufordern.
 
Wenn entweder MAPI_DIALOG oder MAPI_DIALOG_MODELESS nicht festgelegt ist, müssen die nRecipCount - und lpRecips-Member der Struktur für eine erfolgreiche Nachrichtenübermittlung gültig sein. Clientanwendungen können den flFlags-Member auf MAPI_RECEIPT_REQUESTED festlegen, um einen Lesebericht anzufordern.

Weitere Informationen dazu, wie die Funktion Empfängerinformationen verarbeitet, finden Sie unter Behandeln von Empfängerinformationen in Anmerkungen.

[in] flFlags

Typ: FLAGS

Bitmaske von Optionsflags. Die folgenden Flags können festgelegt werden.

Wert Bedeutung
MAPI_DIALOG
0x00000008
Es sollte ein modales Anwendungsdialogfeld angezeigt werden, um den Benutzer zur Eingabe von Empfängern und anderen Sendeoptionen aufzufordern.

Wenn weder MAPI_DIALOG noch MAPI_DIALOG_MODELESS festgelegt ist, muss mindestens ein Empfänger angegeben werden.

MAPI_DIALOG_MODELESS
0x00000004 | MAPI_DIALOG
Verfügbar unter Windows mit der nächsten Office-Version:

Es sollte ein modusloses Dialogfeld angezeigt werden, um den Benutzer zur Eingabe von Empfängern und anderen Sendeoptionen aufzufordern.

Wenn MAPI_DIALOG_MODELESS festgelegt ist, sollte der lhSession-Parameter auf 0 festgelegt werden. Andernfalls löst Outlook eine Ausnahme aus, wenn dieses Flag festgelegt ist und lhSession nicht 0 ist.

Wenn MAPI_DIALOG_MODELESS festgelegt ist, ignoriert das System außerdem das MAPI_NEW_SESSION-Flag .

Wenn weder MAPI_DIALOG noch MAPI_DIALOG_MODELESS festgelegt ist, muss mindestens ein Empfänger angegeben werden.

Tipp Um dieses Flag unter Windows 7 oder früher verwenden zu können, müssen Sie sowohl das Windows SDK für Windows 8 als auch die nächste Version von Office installiert haben, und Sie müssen MAPISendMailHelper anstelle von MAPISendMailW aufrufen.
 
MAPI_LOGON_UI
0x00000001
Es sollte ein Dialogfeld angezeigt werden, in dem der Benutzer aufgefordert wird, sich bei Bedarf anzumelden.

Wenn das MAPI_LOGON_UI-Flag nicht festgelegt ist, zeigt die Clientanwendung kein Anmeldedialogfeld an und gibt einen Fehlerwert zurück, wenn der Benutzer nicht angemeldet ist.

Wenn der lpszMessageID-Parameter leer ist, wird das flag MAPI_LOGON_UI ignoriert.

MAPI_NEW_SESSION
0x00000002
Es wird versucht, eine neue Sitzung zu erstellen, anstatt die freigegebene Sitzung der Umgebung zu erhalten. Wenn das MAPI_NEW_SESSION-Flag nicht festgelegt ist, verwendet die Funktion eine vorhandene, freigegebene Sitzung.

Wenn Sie das MAPI_NEW_SESSION-Flag festlegen (die Verwendung einer freigegebenen Sitzung verhindern) und das Profil ein Kennwort erfordert, müssen Sie auch das MAPI_LOGON_UI-Flag festlegen, da die Funktion fehlschlägt. Ihre Clientanwendung kann diesen Fehler vermeiden, indem Sie das Standardprofil ohne Kennwort oder ein explizites Profil ohne Kennwort verwenden.

MAPI_FORCE_UNICODE
0x00040000
Konvertieren Sie die Nachricht nicht in ANSI, wenn der Anbieter Unicode nicht unterstützt.
Hinweis Dieses Flag ist nur für MAPISendMailW verfügbar.
 

ulReserved

Typ: ULONG

Reserviert; muss null sein.

Rückgabewert

Typ: ULONG

Diese Funktion gibt einen der folgenden Werte zurück.

Rückgabecode/-wert BESCHREIBUNG
MAPI_E_AMBIGUOUS_RECIPIENT
21
Ein Empfänger entsprach mehr als einer der Empfängerdeskriptorstrukturen, und MAPI_DIALOG nicht festgelegt wurde. Es wurde keine Nachricht gesendet.
MAPI_E_ATTACHMENT_NOT_FOUND
11
Die angegebene Anlage wurde nicht gefunden. Es wurde keine Nachricht gesendet.
MAPI_E_ATTACHMENT_OPEN_FAILURE
12
Die angegebene Anlage konnte nicht geöffnet werden. Es wurde keine Nachricht gesendet.
MAPI_E_ATTACHMENT_TOO_LARGE
28
Die angegebene Anlage war zu groß. Es wurde keine Nachricht gesendet.
MAPI_E_BAD_RECIPTYPE
15
Der Typ eines Empfängers wurde nicht MAPI_TO, MAPI_CC oder MAPI_BCC. Es wurde keine Nachricht gesendet.
MAPI_E_FAILURE
2
Mindestens ein nicht spezifizierter Fehler ist aufgetreten. Es wurde keine Nachricht gesendet.
MAPI_E_INSUFFICIENT_MEMORY
5
Es war nicht genügend Arbeitsspeicher vorhanden, um fortzufahren. Es wurde keine Nachricht gesendet.
MAPI_E_INVALID_RECIPS
25
Mindestens ein Empfänger war ungültig oder wurde nicht in eine Adresse aufgelöst.
MAPI_E_LOGIN_FAILURE
3
Es gab keine Standardanmeldung, und der Benutzer konnte sich nicht erfolgreich anmelden, als das Anmeldedialogfeld angezeigt wurde. Es wurde keine Nachricht gesendet.
MAPI_E_TEXT_TOO_LARGE
18
Der Text in der Nachricht war zu groß. Es wurde keine Nachricht gesendet.
MAPI_E_TOO_MANY_FILES
9
Es gab zu viele Dateianlagen. Es wurde keine Nachricht gesendet.
MAPI_E_TOO_MANY_RECIPIENTS
10
Es gab zu viele Empfänger. Es wurde keine Nachricht gesendet.
MAPI_E_UNICODE_NOT_SUPPORTED
27
Das MAPI_FORCE_UNICODE-Flag wird angegeben, und Unicode wird nicht unterstützt.
Hinweis Dieser Wert kann nur von MAPISendMailW zurückgegeben werden.
 
MAPI_E_UNKNOWN_RECIPIENT
14
Ein Empfänger wurde nicht in der Adressliste angezeigt. Es wurde keine Nachricht gesendet.
MAPI_E_USER_ABORT
1
Der Benutzer hat eines der Dialogfelder abgebrochen. Es wurde keine Nachricht gesendet.
SUCCESS_SUCCESS
0
Der Aufruf war erfolgreich, und die Nachricht wurde gesendet.

Hinweise

Die Funktionen MAPISendMailW (Unicode) und MAPISendMail (ANSI) senden eine Standardnachricht mit oder ohne Benutzerinteraktion. Das Profil muss so konfiguriert sein, dass beide Funktionen die Standarddienstanbieter öffnen können, ohne dass eine Benutzerinteraktion erforderlich ist.

Weder MAPISendMailW noch MAPISendMail erfordert einen Absenderempfänger, um eine Nachricht zu senden.

Ihre Clientanwendung kann eine vollständige oder teilweise Liste von Empfängernamen, Betrefftext, Dateianlagen oder Nachrichtentext bereitstellen. Wenn Informationen fehlen, kann die von Ihnen aufgerufene Funktion ( entweder MAPISendMailW oder MAPISendMail) den Benutzer zur Eingabe der fehlenden Informationen auffordern.

Wenn keine Informationen fehlen, kann die Nachricht unverändert gesendet werden, oder der Benutzer kann aufgefordert werden, die Informationen zu überprüfen und die Werte bei Bedarf zu ändern.

Sowohl MAPISendMailW als auch MAPISendMail unterscheiden sich von der MAPISendDocuments-Funktion dadurch, dass sie mehr Flexibilität bei der Nachrichtengenerierung ermöglichen.

Nachrichtentext

Einige Clientanwendungen können Betreffzeilen abschneiden, die zu lang sind oder Wagenrückläufe, Zeilenfeeds oder Formularfeeds enthalten.

Jeder Absatz sollte mit einem CR (0x0d), einem LF (0x0a) oder einem CRLF-Paar (0x0d0a) beendet werden. Sowohl MAPISendMailW als auch MAPISendMail-Umbruchzeilen nach Bedarf.

Wenn der Text die Systemgrenzwerte überschreitet, gibt die Funktion den MAPI_E_TEXT_TOO_LARGE Wert zurück.

Dateianlagen

Die Anzahl der Anlagen pro Nachricht kann in einigen Messagingsystemen begrenzt werden. Wenn dieser Grenzwert überschritten wird, schlägt die Funktion fehl und gibt den MAPI_E_TOO_MANY_FILES Wert zurück.

Dateianlagen werden in die Nachricht kopiert, bevor die Funktion zurückgegeben wird. Daher wirken sich spätere Änderungen an den Dateien nicht auf den Inhalt der Nachricht aus. Die Dateien müssen geschlossen werden, wenn sie kopiert werden.

Versuchen Sie nicht, Anlagen außerhalb des Bereichs des Nachrichtentexts anzuzeigen.

Empfänger

Einige Messagingsysteme können die Anzahl der Empfänger pro Nachricht einschränken. Wenn die Clientanwendung einen Nicht-NULL-Wert übergibt, der eine Anzahl von Empfängern angibt, die den Systemgrenzwert überschreiten, schlägt die Funktion fehl und gibt den MAPI_E_TOO_MANY_RECIPIENTS Wert zurück.

Wenn Ihre Clientanwendung Nachrichten an einen oder mehrere benutzerdefinierte Empfänger sendet und Sie vermeiden möchten, die Namen dieser Empfänger aufzulösen, müssen Sie die Adresse des benutzerdefinierten Empfängers angeben.

Um eine Adresse eines Empfängers anzugeben, wenn Sie MAPISendMailW aufrufen, müssen Sie das lpszAddress-Element der MapiRecipDescW-Struktur , die die Empfängerinformationen enthält, auf die benutzerdefinierte Adresse festlegen. Diese MapiRecipDescW-Struktur ist in dem Array von Empfängern enthalten, das im lpRecips-Member der MapiMessageW-Struktur gespeichert ist, das vom lpMessage-Parameter an die Funktion übergeben wird.

Hinweis Um die Adresse eines Empfängers anzugeben, wenn Sie MAPISendMail aufrufen, befolgen Sie die obigen Anweisungen für MAPISendMailW, ersetzen Sie jedoch die Strukturen MapiRecipDesc und MapiMessage .

 

Eine erfolgreiche Rückgabe der Funktion impliziert nicht unbedingt die Empfängervalidierung. Die Nachricht wurde möglicherweise nicht an alle Empfänger gesendet. Je nach Transportanbieter kann die Empfängerüberprüfung ein langwieriger Prozess sein.

Behandeln von Empfängerinformationen

Das lpRecips-Element der MapiMessageW-Struktur oder die MapiMessage-Struktur kann entweder einen Eintragsbezeichner, den Namen des Empfängers, eine Adresse oder ein Name-Adresspaar enthalten. Die folgende Tabelle zeigt, wie die Funktion jeden Fall behandelt.
Empfängerinformationen Action
Eintragsbezeichner Keine Namensauflösung; Der Name und die Adresse werden ignoriert.
Name Der Name wurde mithilfe der Einfachen MAPI-Auflösungsregeln aufgelöst.
Adresse Keine Namensauflösung; address wird sowohl für die Nachrichtenübermittlung als auch für die Anzeige des Empfängernamens verwendet.
Name und Adresse Keine Namensauflösung; Name, der nur zum Anzeigen des Empfängernamens verwendet wird.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 8 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile mapi.h

Weitere Informationen

MAPISendMailHelper

Windows SDK für Windows 8