UTILISER LE MAPI POUR ENVOYER UN MAIL

Aziz ABI - 8 nov. 2000 à 17:31
 Utilisateur anonyme - 16 mars 2013 à 18:15
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/116-utiliser-le-mapi-pour-envoyer-un-mail

Utilisateur anonyme
16 mars 2013 à 18:15
est ce que il ya une version c++ de ce code ?
philbar71 Messages postés 70 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 5 juillet 2013
21 mars 2008 à 15:12
Extra !
sebauggiv Messages postés 1 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 15 juin 2007
15 juin 2007 à 14:36
bonjour
j'ai l'erreur d'execution 48389
??? j'ai pourtant copier le code source d'origine et rajouté les 2 contoles. Help
adamo901 Messages postés 139 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 8 décembre 2008
28 févr. 2007 à 12:29
Bonjour :
Comment Envoyer un email avec un nom d'expediteur différent
(c'est possible avec WinSock) mais, est-il possible avec mapi
devforce1 Messages postés 15 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 20 septembre 2006
20 sept. 2006 à 11:14
Apres récupération d'un code pour Mapi d'un autres programmes j'ai visiblement trouvé comment resoudre mon soucis.
Il faut utilisé la methode mapimessage.Compose qui vide le tampon de composition et reassigne la valeur -1 a la propriété Msgindex.

J'espere que ca pourra servir a d'autres. ;)

A bientot
devforce1 Messages postés 15 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 20 septembre 2006
20 sept. 2006 à 10:39
hello a tous...

J'utilise le controle mapi depuis quelques temps et pour envoyé un mail pas de soucis.
Ca se complique quand on vut en envoyé plusieurs a la suite sans fermé le programme, je m'explique...

J'envoi 3 mails de suite avec des destinataires différents (et pas le meme nombres a chaque mails)
le premier mail possede les destinataires A, B et C
le second mail possede les destinataires D
le troisieme mail possede les destinataires E et F

quand je code ca, pas de soucis particulier mais la réalité en est autrement, dans ma boite outlook j'ai en realité :
1er mail avec A, B et C ==> Pas de soucis
2em mail avec D, B et C ==> Problème
3em mail avec E, F et C ==> Problème

On a essayé de fermé la session puis la reouvrir, de fermé le mapisession et mapimessage, toujours pareil.
On a essayé de modifié les propriété recipindex et autres et toujours pareil.

Si quelqu'un avait une solution ca serait bien cool. On commence a bien se prendre la tete et les automatisme ne le sont plus vraiment.

Ps : ca fais la meme chose avec les pieces jointes

Merci d'avance
cs_ifaza Messages postés 21 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 11 avril 2007
4 août 2006 à 12:33
il faut mettre devant mapimessage.send la valeur true
hackoustik Messages postés 81 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 8 février 2007
2 avril 2006 à 19:39
ya moyen que la boite denvois que mapi ouvre n'apparaisse pas, en plus jai meme la demande dautorisation de ooutlook qui souvre, moi il aurait falu que rien napparaisse.

bonne soirée à tous ;)
cs_dabro Messages postés 24 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 25 novembre 2016
18 oct. 2005 à 09:18
'Sur une page Form1 placer un contrôle MAPISession1 et un contrôle MAPIMessages1
'Pour envoyer à plusieurs destinataires, et copies conforme, et copies conformes invisibles

Sub EcrireEmail()

On Error GoTo ErrMail

'Déclaration des variables

Dim msg$, Objet$, FichierJoint1$, FichierJoint2$
Dim DestinataireEmail$, DestinataireEmailCopie$, DestinataireEmailInvisible$

'Pour les destinataires, il suffit de boucler sur une lise et d'insérer un "; " entre chaque destinataire
DestinataireEmail$ = "coucou1@pouetpouet.com; coucou2@pouetpouet.com; coucou3@pouetpouet.com"
DestinataireEmailCopie$ = "copie1@gvl.com; copie2@gvl.com"
DestinataireEmailInvisible$ = "copie1.invisible@gvl.com; copie2.invisible@gvl.com"

'Eventuel fichier joint
FichierJoint1$ = "c:\Fichier1.txt"
FichierJoint2$ = "c:\Fichier2.txt"

'Objet du message
Objet$ = "Texte de l'objet du mail"

'Texte du message
msg = "Bonjour !" & vbCrLf & vbCrLf
msg = msg & "Un petit coucou depuis Visual Basic !" & vbCrLf
msg = msg & "Voilà le fichier " & FichierJoint$


'Lancement de la procédure. Si on ne donne pas de destinataire, le carnet d'adresse est ouvert.

Form1.MAPISession1.SignOn
With Form1.MAPIMessages1
Form1.Refresh
.MsgIndex = -1
'Permet de choisir un destinataire dans le carnet d'adresses si DestMail$ est vide
If DestinataireEmail$ = "" Then
Screen.MousePointer = 0
Form1.Refresh
Form1.MAPIMessages1.Show
Form1.Refresh
Screen.MousePointer = 11
DestinataireEmail$ = Form1.MAPIMessages1.RecipAddress
If Left(DestinataireEmail$, 5) "SMTP:" Then DestinataireEmail$ Right(DestinataireEmail$, Len(DestinataireEmail$) - 5)
Form1.Refresh
End If
'Accusé de réception
.MsgReceiptRequested = True

'Destinataire principal
.RecipIndex = 0
.RecipType = mapToList
.RecipDisplayName = DestinataireEmail$ 'Adresse e-mail du destinataire principal

'Destinataire en copie conforme
.RecipIndex = 1
.RecipType = mapCcList
.RecipDisplayName = DestinataireEmailCopie$ 'Adresse e-mail du destinataire Destinataire en copie conforme

'Destinataire en copie conforme invisible
.RecipIndex = 2
.RecipType = mapBccList
.RecipDisplayName = DestinataireEmailInvisible$ 'Adresse e-mail du destinataire en copie conforme invisible

.MsgSubject = Objet$ 'Sujet du mail

'Message avec 2 fichiers joints
.MsgNoteText = Space(2) & msg$ 'Space(2) pour 2 fichiers joints, 5 pour 5 fichiers... et le message du mail

.AttachmentIndex = 0
.AttachmentPosition = 0
.AttachmentPathName = FichierJoint1$

.AttachmentIndex = 1
.AttachmentPosition = 1
.AttachmentPathName = FichierJoint2$


'Message sans fichier joint
'.MsgNoteText = msg$ 'Message du mail

.SessionID = Form1.MAPISession1.SessionID
Screen.MousePointer = 0

'Pour éviter le message "un programme tente automatiquement d'envoyer des courriers en votre nom..."
'Mettre Send True
.Send True
End With
Form1.MAPISession1.SignOff

MsgBox "Envoyé !" & vbCrLf & vbCrLf & "Si votre messagerie n'est pas active, il faut le faire et choisir d'envoyer les messages contenus dans la boîte d'envoi.", vbInformation, "Mail expédié"

Exit Sub

ErrMail:
Screen.MousePointer = 0

Select Case Err
Case 32001
MsgBox "Le message n'a pas été envoyé. Processus annulé par l'utilisateur.", vbExclamation, "Message NON envoyé !"
Form1.MAPISession1.SignOff
Exit Sub

Case 32003
MsgBox "Le message n'a pas été envoyé. Echec de la connexion.", vbExclamation, "Message NON envoyé !"
Form1.MAPISession1.SignOff
Exit Sub

Case 32026
MsgBox "Le message n'a pas été envoyé.", vbExclamation, "Message NON envoyé !"
fMain.MAPISession1.SignOff
Exit Sub

Case Else
MsgBox "Erreur " & Err & " " & Error
Form1.MAPISession1.SignOff
Exit Sub

End Select

End Sub
cs_clementpat Messages postés 406 Date d'inscription lundi 2 décembre 2002 Statut Membre Dernière intervention 25 janvier 2014
13 août 2005 à 00:42
impossible d'envoyer un fichier : bloque sur .ResolveName
erreur 32002 si ya une personne qui voit le probléme !
cs_clementpat Messages postés 406 Date d'inscription lundi 2 décembre 2002 Statut Membre Dernière intervention 25 janvier 2014
13 août 2005 à 00:24
Un des truc le plus utile que je viens d'apprendre 10/10
ceux qui n'on pas mis 10 ne se sont pas aperçu de l'utilité de cette source .
SkyRocKo Messages postés 174 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 18 février 2006
6 févr. 2005 à 21:21
Hello !

Moi quand je veux envoyer un mail, Eudora se lance est-ce normal et comment empêcher cela ?

Merci d'avance
fredenho Messages postés 6 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 10 novembre 2006
29 mars 2004 à 16:36
Bonjour,
J'ai deja envoyé des mails avec le composant Winsock, mais j'aimerais utiliser le Mapi. J'essaye le code au dessus mais des que je passe sur la ligne "MAPISession1.SignOn", il m'ouvre l'assistant de connexion Internet....Est ce que quelqu'un pourrais me dire pourkoi?? et comment virer cette fenetre, de sorte que mon mail soit envoyer de facon "transparente"!!!
Merki beaucoup!!
fr64 Messages postés 32 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 4 avril 2007
17 févr. 2004 à 16:35
Autant pour moi.
Pour eviter l'affichage du message d'Outlook : "Une application tente d'accéder à vos paramètres...", c'est pas simple: voir l'article
http://support.microsoft.com/default.aspx?scid=kb;FR;290499
fr64 Messages postés 32 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 4 avril 2007
17 févr. 2004 à 15:50
Pour eviter l'affichage du message d'Outlook : "Une application tente d'accéder à vos paramètres...", mettre true comme paramétre de la méthode Send:
MAPIMessage1.send True
fr64 Messages postés 32 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 4 avril 2007
17 févr. 2004 à 15:49
Pour eviter l'affichage du message d'Outlook : "Une application tente d'accéder à vos paramètres...", mettre true comme paramétre de la méthode Send:
MAPIMessage1.send True
mirylou Messages postés 2 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 13 janvier 2004
13 janv. 2004 à 22:44
Est-ce qu'il y a quelqu'un qui a réussi a envoyer un mail avec un fichier joint sans obtenir l'erreur 32002?
jcduyck Messages postés 1 Date d'inscription lundi 13 octobre 2003 Statut Membre Dernière intervention 13 octobre 2003
13 oct. 2003 à 16:43
AU SECOURS !! personne ne connait d'explication à l'erreur 32002 ? et de solution de contournement ?
merci de votre aide.salut!
cs_epoc Messages postés 87 Date d'inscription mardi 28 mai 2002 Statut Membre Dernière intervention 25 octobre 2006
6 févr. 2003 à 18:54
=> pour carpediem : tu vas dans outlook/outils/options/sécurité et tu décoches "m'avertir kan d'autres applcations essayent d'envoyer des messages de ma part"
cs_carpediem Messages postés 9 Date d'inscription lundi 27 mai 2002 Statut Membre Dernière intervention 6 avril 2007
27 mai 2002 à 10:36
Il est très bien ton code mais il ne résout pas mes affaires :
Comment éviter le message d'Outlook : "Une application tente d'accéder à vos paramètres..." ?
Ce message m'emmerde (oups pardon) depuis longtemps car je ne voudrais pas permettre aux utilisateurs d'annuler l'envoi. J'aimerai un envoi "silencieux" et qu'il n'aient pas à cliquer 2 fois sur Oui pour que ça marche !

Merci
Gestmed Messages postés 4 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 8 mai 2009
22 avril 2002 à 11:46
Salut !
Comment faire pour demander l'accusé de réception ? ou sinon fonctionne bien
cs_adsl44 Messages postés 13 Date d'inscription lundi 11 mars 2002 Statut Membre Dernière intervention 28 novembre 2004
19 mars 2002 à 10:49
J'ai Trouvé pour l'erreur 32002 lors d'un envoi avec fichier attaché !!

le .AttachmentIndex doit etre egal à 0 pour le premier fichier
et 1 , 2 ... pour les autres !!!
Bonne lecture à tous !
cs_Jordel Messages postés 27 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 14 décembre 2007
14 mars 2002 à 17:05
salut encore...
J'ai encore cette foutue erreur 32002 quand j'essaie d'envoyer un mail...

Mais comment la resoudre mes amis ?
cristiandan Messages postés 52 Date d'inscription lundi 26 novembre 2001 Statut Membre Dernière intervention 4 novembre 2005
14 mars 2002 à 12:06
j'ai trouvé sur le site de Microsoft la solution pour attacher plusieurs pièces jointes
Sub Main()
'Logon & Sync
MAPISession1.SignOn

'Create Message w/Attachments then Send
With MAPIMessages1
.SessionID = MAPISession1.SessionID
.Compose
.MsgSubject = "OCX - Test Message"

.RecipDisplayName = "YourRecipientNameHere"
.ResolveName

'The value 2 is passed to the Space() function in the
'next line because there are two attachments to add.
'These spaces act as placeholders for the attachments.
.MsgNoteText = _
Space(2) & vbCrLf & _
"This message was sent from the MSMAPI32.OCX." & vbCrLf & _
"This message contains 2 attachments."

'Replace the AttachmentPathName values below as applicable...
.AttachmentIndex = 0
.AttachmentPosition = 0
.AttachmentPathName = ("c: est1.txt")
.AttachmentIndex = 1
.AttachmentPosition = 1
.AttachmentPathName = ("c: est2.txt")
.Send
End With

MAPISession1.SignOff

End Sub

et ca marche
cristiandan Messages postés 52 Date d'inscription lundi 26 novembre 2001 Statut Membre Dernière intervention 4 novembre 2005
14 mars 2002 à 11:40
Bonjour,
toujours l'erreur 32002 quand j'essaie d'attacher plusieurs pièces jointes.
While i < List1.ListCount
.AttachmentIndex = MAPIMessages1.AttachmentCount
.AttachmentPathName = List1.List(i)
i = i + 1
Wend
Correct?????
cs_Jordel Messages postés 27 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 14 décembre 2007
14 mars 2002 à 11:25
Bonjour,
cette source me parait tres bien mais j'ai un probleme avec...j'ai une erreur non specifiee sur le .send ... mais je ne sais pas pourquoi !!!

Si quelqu'un peut m'aider ... Merci d'avance.
cs_adsl44 Messages postés 13 Date d'inscription lundi 11 mars 2002 Statut Membre Dernière intervention 28 novembre 2004
12 mars 2002 à 16:03
Peut on utiliser MAPI dans un module sans etre obligé de créer un form avec 1 MAPISession et 1 MAPIMessage.

exemple :
Public Function EnvoiMail(nomDestinataire As String, adresseDestinataire As String, sujetMail As String, texteMail As String)
Dim MAPISession1 As MAPISession
Dim MAPIMessages1 As MAPIMessages

MAPISession1.SignOn
lpikachu58 Messages postés 351 Date d'inscription samedi 2 février 2002 Statut Membre Dernière intervention 6 mai 2004 2
2 févr. 2002 à 12:08
Eh les gens est ce qu'il y a moyen de mettre une page html à la place du message
vdu78 Messages postés 2 Date d'inscription mercredi 26 décembre 2001 Statut Membre Dernière intervention 18 janvier 2002
18 janv. 2002 à 23:21
Ce programme est très bien et très simple d'utilisation. Par contre, avec Office XP, une fenêtre apparait au moment du send, indiquant "un programme tente automatiquement d'envoyer des courriers en votre nom. Si cette action est inatendue, il se eput qu'il s'agisse d'un virus. Dans ce cas, choisissez non." 3 boutons sont alors proposés : oui, non, aide.
Comment faire pour ne plus faire afficher cette fenêtre qui empêche tout envoi automatique.
Merci de votre aide.
HELP !! Pk quand je debogue mon programme, il me dit dit qu'il y a une erreur dans MAPISSESSION1.signon
Sinon, est-ce à cause d'AOL que ça marcherais pas ?
Répondez moi svp
Je suis débutant
Comment choisir l'expéditeur ?
il m'envoi toujours avec le profil par défaut..
Et quand j'indique l'Username il me dit que le profil n'existe pas.
Je cherche à tout prix le moyen d'envoyer des mails depuis mon application sans utiliser MAPI... Help!
comment faire pour changer l'expediteur svp ?
Je cherche désespérement comment envoyer un mail en HTML avec la MAPI.
Please Help HELP !!!
Merci pour ton code.
une explication claire comme je les aime.
comment insérer un controle MAPI et une MAPISession et MAPIMessage.

merci d'avance
!!!!!!!HELP WANTED!!!!!!

Comment fait on pour Envoyer un message en HTML ??
Bah alors Huguies1,(tu me reconnais???), t'as des problemes?
tu fais
MAPIMessages1.RecipDisplayName = "EMAILDESTINATAIRE@mail.com"
;-)
Je pense que tu as tout simplement oulié les guillemets en fait non?
Comment faire pour insèrer un @ car il me dit qu'il attend une fin d'instruction !!!
Pour envoyer à plusieurs destinataires :

with MAPIMessage1
.......
.MAPIMessages1.RecipIndex = MAPIMessages1.RecipCount 'comptant le nombre de recepteur
.RecipAddress = adresse Email
.RecipIndex ... 'et ainsi de suite le repeter pour n utilisateur

Pour plusieurs documents joins:
with MAPIMessage1
.......
.AttachmentIndex = MAPIMessages1.AttachmentCount 'comptant le nombre de recepteur
.AttachmentPathName = chemin d'accès et nom de votre fichier à joindre
.AttachmentIndex ... 'et ainsi de suite le repeter pour n pieces jointes
Super ce code , ça fonctionne bien pour un unique destinataire et une seule piece jointe.

Comment puis je faire pour envoyer à plusieurs destinataire ce mail ?

Comment puis-je faire pour joindre autant de piece jointe que je veux (0 à 10)?

Et enfin j'ai l'erreur 32002 activer comment puis je y remedier

Merci d'avance
y-a-t-il un moyen simple pour récupérer des attachements d'un e-mail reçu...?
je cale sur ce problème;.
je voudrais récupérer deux attachements d'un mail qui contiendra un sujet spécial, et deux fichiers en attachements..
comment que je fais-t-il ?
pas trouvé encore, même si je sais comment envoyer...
ERREUR 32002 RAAAAAAAAAa
Je cherche depuis deux jours sur le net un astuce pour envoyer un mail au format HTML avec l' API VB.
Je n'ai toujours pas trouvé peux m'aider.
c'est bien beau, ca fonctionne hyper bien ce truc, mais pourtant ...
Avec ce programme; les Emails sont envoyés au format text, et comment peut on faire pour les envoyés au format html ?
parce que là, ce que je vois dans l'Email, ce sont les sources ...
32002 : a priori erreur connue mais pas de réponses sur sa correction sur le site.
c'est dommage.

j'attend vite une réponse je suis bloqué. Merci
le tour est joué...
le tour est joué...
le tour est joué...
Pas du tout! L'erreur 32002 est activée... et rien n'apparaît dans les éléments envoyés...

Pour rattacher :
with ...
.AttachmentPathName =
cAttachmentPathName
.AttachmentName =
cAttachmentName
end with
Et comment rattacher une piece jointe.

Merci