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.
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. |
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 |
---|---|
|
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é. |
|
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.
|
|
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é. |
|
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. |
|
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 |
---|---|
|
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é. |
|
La pièce jointe spécifiée est introuvable. Aucun message n’a été envoyé. |
|
Impossible d’ouvrir la pièce jointe spécifiée. Aucun message n’a été envoyé. |
|
La pièce jointe spécifiée était trop volumineuse. Aucun message n’a été envoyé. |
|
Le type d’un destinataire n’était pas MAPI_TO, MAPI_CC ou MAPI_BCC. Aucun message n’a été envoyé. |
|
Une ou plusieurs erreurs non spécifiées se sont produites. Aucun message n’a été envoyé. |
|
La mémoire était insuffisante pour continuer. Aucun message n’a été envoyé. |
|
Un ou plusieurs destinataires n’étaient pas valides ou n’ont pas résolu d’adresse. |
|
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é. |
|
Le texte du message était trop volumineux. Aucun message n’a été envoyé. |
|
Il y avait trop de pièces jointes de fichiers. Aucun message n’a été envoyé. |
|
Il y avait trop de destinataires. Aucun message n’a été envoyé. |
|
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.
|
|
Un destinataire n’apparaît pas dans la liste d’adresses. Aucun message n’a été envoyé. |
|
L’utilisateur a annulé l’une des boîtes de dialogue. Aucun message n’a été envoyé. |
|
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 .
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 |