MAPISENDMAILW, fonction de rappel (mapi.h)

Envoie un message Unicode. Cette fonction remplace la fonction ANSI MAPISendMail.

Sur Windows 7 et versions antérieures : Installez le Kit de développement logiciel (SDK) Microsoft Windows pour Windows 8 et utilisez MAPISendMailHelper pour envoyer un message.

Toutes les informations s’appliquent à MAPISendMailW et MAPISendMail , sauf indication contraire.

Syntaxe

MAPISENDMAILW Mapisendmailw;

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

Paramètres

[in] lhSession

Type : LHANDLE

Gérez une session MAPI simple ou zéro.

Si la valeur du paramètre lhSession est égale à zéro, MAPI se connecte à l’utilisateur et crée une session qui existe uniquement pendant la durée de l’appel. Cette session temporaire peut être une session partagée existante ou une nouvelle. Si nécessaire, la boîte de dialogue d’ouverture de session s’affiche.

[in] ulUIParam

Type : ULONG_PTR

Handle de fenêtre parente ou zéro.

Si le paramètre ulUIParam contient le handle de fenêtre parent, le handle est de type HWND (cast en ULONG_PTR).

Si aucune boîte de dialogue n’est affichée pendant l’appel, ulUIParam est ignorée.

[in] lpMessage

Type : lpMapiMessageW

Pointeur vers une structure MAPISendMailW contenant le message à envoyer.

Note Pour la fonction MAPISendMail , ce paramètre pointe vers une structure MapiMessage .
 
Lorsque vous appelez la fonction, notez les informations suivantes sur les membres de la structure des messages :
Membre Remarques
lpFiles Définissez ce membre sur NULL lorsque le message n’a pas de pièces jointes de fichier.
lpszMessageType Utilisé par les applications qui ne gèrent pas les messages interpersonnelles. Si votre application gère les messages interpersonnelles, définissez le membre lpszMessageType sur NULL ou définissez-le pour qu’il pointe vers une chaîne vide.
lpszSubject La valeur NULL signifie qu’il n’y a pas de texte pour l’objet du message.
lpszNoteText La valeur NULL signifie qu’il n’y a pas de texte dans le corps du message.
lpRecips La valeur NULL signifie qu’il n’y a pas de destinataires. En outre, lorsque ce membre a la valeur NULL, le membre nRecipCount doit être égal à zéro.
nRecipCount La valeur zéro signifie qu’il n’y a pas de destinataires. En outre, lorsque ce membre est égal à zéro, le membre lpRecips doit être NULL.
 
Pourboire Lorsque vous appelez la fonction et qu’il n’y a pas de destinataires, vous devez définir l’indicateur MAPI_DIALOG ou l’indicateur MAPI_DIALOG_MODELESS pour inviter l’utilisateur à entrer des informations sur le destinataire.
 
Si MAPI_DIALOG ou MAPI_DIALOG_MODELESS n’est pas défini, les membres nRecipCount et lpRecips de la structure doivent être valides pour la remise de messages réussie. Les applications clientes peuvent définir le membre flFlags sur MAPI_RECEIPT_REQUESTED pour demander un rapport de lecture.

Pour plus d’informations sur la façon dont la fonction gère les informations des destinataires, consultez Gestion des informations sur les destinataires dans les remarques.

[in] flFlags

Type : FLAGS

Masque de bits des indicateurs d’option. Les indicateurs suivants peuvent être définis.

Valeur Meaning
MAPI_DIALOG
0x00000008
Une boîte de dialogue modale d’application doit s’afficher pour inviter l’utilisateur à entrer les destinataires et d’autres options d’envoi.

Si aucun MAPI_DIALOG ni MAPI_DIALOG_MODELESS n’est défini, au moins un destinataire doit être spécifié.

MAPI_DIALOG_MODELESS
0x00000004 | MAPI_DIALOG
Disponible sur Windows avec la prochaine version d’Office :

Une boîte de dialogue sans mode doit s’afficher pour inviter l’utilisateur à entrer les destinataires et d’autres options d’envoi.

Si MAPI_DIALOG_MODELESS est défini, le paramètre lhSession doit être défini sur zéro. Sinon, si cet indicateur est défini et que lhSession n’est pas zéro, Outlook génère une exception.

En outre, si MAPI_DIALOG_MODELESS est défini, le système ignore l’indicateur de MAPI_NEW_SESSION .

Si aucun MAPI_DIALOG ni MAPI_DIALOG_MODELESS n’est défini, au moins un destinataire doit être spécifié.

Pourboire Pour utiliser cet indicateur sur Windows 7 ou une version antérieure, vous devez disposer du Kit de développement logiciel (SDK) Windows pour Windows 8 et de la version suivante d’Office, et vous devez appeler MAPISendMailHelper au lieu de MAPISendMailW.
 
MAPI_LOGON_UI
0x00000001
Une boîte de dialogue doit s’afficher pour inviter l’utilisateur à se connecter si nécessaire.

Si l’indicateur MAPI_LOGON_UI n’est pas défini, l’application cliente n’affiche pas de boîte de dialogue d’ouverture de session et retourne une valeur d’erreur si l’utilisateur n’est pas connecté.

Si le paramètre lpszMessageID est vide, l’indicateur MAPI_LOGON_UI est ignoré.

MAPI_NEW_SESSION
0x00000002
Une tentative est effectuée pour créer une nouvelle session plutôt que d’acquérir la session partagée de l’environnement. Si l’indicateur MAPI_NEW_SESSION n’est pas défini, la fonction utilise une session partagée existante.

Si vous définissez l’indicateur de MAPI_NEW_SESSION (empêchant l’utilisation d’une session partagée) et que le profil nécessite un mot de passe, vous devez également définir l’indicateur MAPI_LOGON_UI ou la fonction échouera. Votre application cliente peut éviter cette défaillance en utilisant le profil par défaut sans mot de passe ou en utilisant un profil explicite sans mot de passe.

MAPI_FORCE_UNICODE
0x00040000
Ne convertissez pas le message en ANSI si le fournisseur ne prend pas en charge Unicode.
Note Cet indicateur est disponible uniquement pour MAPISendMailW .
 

ulReserved

Type : ULONG

Réservé; doit être égal à zéro.

Valeur retournée

Type : ULONG

Cette fonction retourne l’une des valeurs suivantes.

Retourner le code/la valeur Descriptif
MAPI_E_AMBIGUOUS_RECIPIENT
Vingt-et-un
Un destinataire a mis en correspondance plusieurs structures de descripteur de destinataire et MAPI_DIALOG n’a pas été défini. Aucun message n’a été envoyé.
MAPI_E_ATTACHMENT_NOT_FOUND
11
La pièce jointe spécifiée est introuvable. Aucun message n’a été envoyé.
MAPI_E_ATTACHMENT_OPEN_FAILURE
12
Impossible d’ouvrir la pièce jointe spécifiée. Aucun message n’a été envoyé.
MAPI_E_ATTACHMENT_TOO_LARGE
28
La pièce jointe spécifiée était trop grande. Aucun message n’a été envoyé.
MAPI_E_BAD_RECIPTYPE
15
Le type d’un destinataire n’était pas MAPI_TO, MAPI_CC ou MAPI_BCC. Aucun message n’a été envoyé.
MAPI_E_FAILURE
2
Une ou plusieurs erreurs non spécifiées se sont produites. Aucun message n’a été envoyé.
MAPI_E_INSUFFICIENT_MEMORY
5
Il y avait une mémoire insuffisante pour continuer. Aucun message n’a été envoyé.
MAPI_E_INVALID_RECIPS
25
Un ou plusieurs destinataires n’étaient pas valides ou n’ont pas résolu d’adresse.
MAPI_E_LOGIN_FAILURE
3
Il n’y a pas eu d’ouverture de session par défaut et l’utilisateur n’a pas pu se connecter correctement lorsque la boîte de dialogue d’ouverture de session s’affiche. Aucun message n’a été envoyé.
MAPI_E_TEXT_TOO_LARGE
18
Le texte du message était trop volumineux. Aucun message n’a été envoyé.
MAPI_E_TOO_MANY_FILES
9
Il y avait trop de pièces jointes de fichiers. Aucun message n’a été envoyé.
MAPI_E_TOO_MANY_RECIPIENTS
10
Il y avait trop de destinataires. Aucun message n’a été envoyé.
MAPI_E_UNICODE_NOT_SUPPORTED
27
L’indicateur MAPI_FORCE_UNICODE est spécifié et Unicode n’est pas pris en charge.
Note Cette valeur peut être retournée par MAPISendMailW uniquement.
 
MAPI_E_UNKNOWN_RECIPIENT
14
Un destinataire n’apparaît pas dans la liste d’adresses. Aucun message n’a été envoyé.
MAPI_E_USER_ABORT
1
L’utilisateur a annulé l’une des boîtes de dialogue. Aucun message n’a été envoyé.
SUCCESS_SUCCESS
0
L’appel a réussi et le message a été envoyé.

Remarques

Les fonctions MAPISendMailW (Unicode) et MAPISendMail (ANSI) envoient tous deux un message standard, avec ou sans interaction utilisateur. Le profil doit être configuré afin que l’une ou l’autre des fonctions puisse ouvrir les fournisseurs de services par défaut sans nécessiter d’interaction utilisateur.

Ni MAPISendMailW ni MAPISendMail ne nécessite un destinataire de type d’origine pour envoyer un message.

Votre application cliente peut fournir une liste complète ou partielle des noms de destinataires, du texte de l’objet, des pièces jointes de fichiers ou du texte du message. Si des informations sont manquantes, la fonction que vous appelez ( MAPISendMailW ou MAPISendMail) peut inviter l’utilisateur à entrer les informations manquantes.

Si aucune information n’est manquante, le message peut être envoyé tel quel ou l’utilisateur peut être invité à vérifier les informations et à modifier les valeurs si nécessaire.

MAPISendMailW et MAPISendMail diffèrent de la fonction MAPISendDocuments dans laquelle ils permettent une plus grande flexibilité dans la génération de messages.

Texte du message

Certaines applications clientes peuvent tronquer des lignes d’objet trop longues ou contenant des retours chariots, des flux de ligne ou des flux de formulaire.

Chaque paragraphe doit se terminer par un CR (0x0d), un LF (0x0a) ou une paire CRLF (0x0d0a). MAPISendMailW et MAPISendMail encapsulent les lignes selon les besoins.

Si le texte dépasse les limites système, la fonction retourne la valeur MAPI_E_TEXT_TOO_LARGE .

Pièces jointes de fichier

Le nombre de pièces jointes par message peut être limité dans certains systèmes de messagerie. Si cette limite est dépassée, la fonction échoue et retourne la valeur MAPI_E_TOO_MANY_FILES .

Les pièces jointes de fichier sont copiées dans le message avant que la fonction ne retourne ; par conséquent, les modifications ultérieures apportées aux fichiers n’affectent pas le contenu du message. Les fichiers doivent être fermés lorsqu’ils sont copiés.

N’essayez pas d’afficher des pièces jointes en dehors de la plage du texte du message.

Destinataires

Certains systèmes de messagerie peuvent limiter le nombre de destinataires par message. Si l’application cliente transmet une valeur non NULL indiquant un nombre de destinataires dépassant la limite système, la fonction échoue et retourne la valeur MAPI_E_TOO_MANY_RECIPIENTS .

Si votre application cliente envoie des messages à un ou plusieurs destinataires personnalisés et que vous souhaitez éviter de résoudre les noms de ces destinataires, vous devez spécifier l’adresse du destinataire personnalisé.

Pour spécifier une adresse d’un destinataire lorsque vous appelez MAPISendMailW, vous devez définir le membre lpszAddress de la structure MapiRecipDescW qui contient les informations du destinataire sur l’adresse personnalisée. Cette structure MapiRecipDescW est incluse dans le tableau de destinataires stockés dans le membre lpRecips de la structure MapiMessageW passée à la fonction par le paramètre lpMessage .

Note Pour spécifier l’adresse d’un destinataire lorsque vous appelez MAPISendMail, suivez les instructions précédentes pour MAPISendMailW, mais remplacez les structures MapiRecipDesc et MapiMessage .

 

Un retour réussi de la fonction n’implique pas nécessairement la validation du destinataire. Le message n’a peut-être pas été envoyé à tous les destinataires. Selon le fournisseur de transport, la validation des destinataires peut être un processus long.

Gestion des informations sur les destinataires

Le membre lpRecips de la structure MapiMessageW ou MapiMessage peut inclure un identificateur d’entrée, le nom du destinataire, une adresse ou une paire nom et adresse. Le tableau suivant montre comment la fonction gère chaque cas.
Informations sur le destinataire Action
Identificateur d’entrée Aucune résolution de nom ; le nom et l’adresse sont ignorés.
Nom Nom résolu à l’aide des règles de résolution MAPI simples.
Adresse Aucune résolution de nom ; l’adresse est utilisée pour la remise des messages et pour afficher le nom du destinataire.
Nom et adresse Aucune résolution de nom ; nom utilisé uniquement pour afficher le nom du destinataire.

Spécifications

Requirement Valeur
Client minimum requis Windows 8 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2012 [applications de bureau uniquement]
plateforme cible Fenêtres
Header mapi.h

Voir aussi

MAPISendMailHelper

Kit de développement logiciel (SDK) Windows pour Windows 8