Fonction de rappel MAPISENDMAILW (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

Poignée 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é.

[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 de message :
Membre Notes
lpFiles Définissez ce membre sur NULL lorsque le message n’a pas de pièces jointes.
lpszMessageType Utilisé par les applications qui ne gèrent pas les messages interpersonnelles. Si votre application gère les messages interpersonnels, 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 aucun destinataire. 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 aucun destinataire. En outre, lorsque ce membre est égal à zéro, le membre lpRecips doit être NULL.
 
Pointe Lorsque vous appelez la fonction et qu’il n’y a aucun destinataire, vous devez définir l’indicateur MAPI_DIALOG ou l’indicateur MAPI_DIALOG_MODELESS pour inviter l’utilisateur à fournir 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 une remise de message réussie. Les applications clientes peuvent définir le membre flFlagssur MAPI_RECEIPT_REQUESTED pour demander un rapport de lecture.

Pour plus d’informations sur la façon dont la fonction gère les informations de destinataire, 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 Signification
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 ni 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 égal à zéro, Outlook lève une exception.

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

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

Pointe Pour utiliser cet indicateur sur Windows 7 ou une version antérieure, vous devez avoir installé le SDK Windows pour Windows 8 et 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 session au lieu 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 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 sinon la fonction échoue. Votre application cliente peut éviter cet échec 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és au; doit être égal à zéro.

Valeur retournée

Type : ULONG

Cette fonction retourne l’une des valeurs suivantes.

Code/valeur de retour Description
MAPI_E_AMBIGUOUS_RECIPIENT
21
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 volumineuse. 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
La mémoire était 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 avait pas d’ouverture de session par défaut et l’utilisateur n’a pas réussi à se connecter lorsque la boîte de dialogue d’ouverture de session s’affichait. 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é.

Notes

Les fonctions MAPISendMailW (Unicode) et MAPISendMail (ANSI) envoient tous deux un message standard, avec ou sans interaction utilisateur. Le profil doit être configuré pour 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écessitent un destinataire de type originator pour envoyer un message.

Votre application cliente peut fournir une liste complète ou partielle de noms de destinataires, de texte d’objet, de pièces jointes de fichiers ou de texte de message. S’il manque des informations, 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 en ce qu’ils offrent 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 être terminé par un CR (0x0d), un LF (0x0a) ou une paire CRLF (0x0d0a). MAPISendMailW et MAPISendMail encapsulent les lignes en fonction des besoins.

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

Pièces jointes de fichiers

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 fichiers sont copiées dans le message avant le retour de la fonction ; 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 les 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 qui est passé à 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 du destinataire peut être un processus long.

Gestion des informations sur le destinataire

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-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 à la fois pour la remise des messages et pour l’affichage du nom du destinataire.
Nom et adresse Aucune résolution de nom ; nom utilisé uniquement pour afficher le nom du destinataire.

Spécifications

   
Client minimal pris en charge Windows 8 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2012 [applications de bureau uniquement]
Plateforme cible Windows
En-tête mapi.h

Voir aussi

MAPISendMailHelper

SDK Windows pour Windows 8