PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Créer email outlook
Créer email outlook
Débuté par Gael, 31 juil. 2008 16:32 - 9 réponses
Posté le 31 juillet 2008 - 16:32
Bonjour,
Je souhaiterais créer un message dans outlook avec une pièce jointe, le sujet et l'adresse du destinataire pré-renseignée en programmation, et ensuite que l'utilisateur complète son message dans outlook.

Comment faire cette manipulation en programmation avec Windev ?
J'ai essayé le mailto mais il n'est pas possible d'y associer une pièce jointe.

Merci d'avance pour vos réponses.
Cordialement
Posté le 31 juillet 2008 - 17:19
Bonjour,

Je suis passé par les objets OLE pour envoyer des mails avec pièces jointes.

//Déclaration des objets OLE
olMailItem est un entier = 0
MonMail est un objet OLE dynamique
objOutlook = allouer un objet OLE "Outlook.Application"
MonMail = objOutlook>>CreateItem(olMailItem)
// Destinataire
MonMail>>to = "nom@domaine.com; nom2@domaine.com"
MonMail>>cc = "nom3@domaine.com"
// Sujet
MonMail>>subject = "objet"
// Message
MonMail>>body = "" //%0D%0A pour faire un retour à la ligne dans le corps du messsage

// Ajouter une pièce jointe
MonMail>>attachments>>Add(cheminDuFichier)
//Affichage du mail, sans l'envoyer
MonMail>>Display()
//Libération des variables
Libérer MonMail
Libérer objOutlook


voilà...

Anne
Posté le 31 juillet 2008 - 19:47
Merci beaucoup Anne ça marche très bien.

Je me suis juste permis de rajouter "objOutlook est un objet OLE dynamique" qui n'était pas dans le code copié et ca fonctionne comme je le souhaitais.

Bonne soirée
Posté le 30 janvier 2009 - 12:57
Bonjour,
J'utilise votre code qui marche très bien pour l'envoi d'email. Mais j'ai un soucis au niveau du corps du message. Je dois utiliser des variables et faire des retours à la ligne. Je débute et je n'y arrive pas. Pouvez vous m'envoyer l'exemple d'un message SVP. Il me manque plus que ça pour finir mon appli.
Merci d'avance
Posté le 31 mars 2015 - 10:10
Bonjour,

J'ai utilisé votre code , mais une erreur au niveau de la ligne ci-dessous. "identificateur inconnu"

objOutlook = allouer un objet OLE "Outlook.Application"
Posté le 31 mars 2015 - 11:23
Bonjour,

%0D%0A ne fonctionnne pas chez moi , comment l'utiliser?
Posté le 31 mars 2015 - 11:33
Bonjour,

Wep sa marche , mais %0D%0A ne marche pas chez moi ou je ne sais pas utiliser.
mon code

MonMail>>body = "Bonjour %0D%0A Je suis"


ça ne marche pas
Membre enregistré
1 message
Posté le 31 mars 2015 - 17:17
bonjour,
Moa j'ai utilisé :
MonMail>>body = "Bonjour, "+CRLF+ "Je suis...."
Cordialement,
Membre enregistré
2 messages
Posté le 15 septembre 2017 - 12:17
Anne a écrit :
Bonjour,

Je suis passé par les objets OLE pour envoyer des mails avec pièces jointes.

//Déclaration des objets OLE
olMailItem est un entier = 0
MonMail est un objet OLE dynamique
objOutlook = allouer un objet OLE "Outlook.Application"
MonMail = objOutlook>>CreateItem(olMailItem)
// Destinataire
MonMail>>to = "nom@domaine.com; nom2@domaine.com"
MonMail>>cc = "nom3@domaine.com"
// Sujet
MonMail>>subject = "objet"
// Message
MonMail>>body = "" //%0D%0A pour faire un retour à la ligne dans le corps du messsage

// Ajouter une pièce jointe
MonMail>>attachments>>Add(cheminDuFichier)
//Affichage du mail, sans l'envoyer
MonMail>>Display()
//Libération des variables
Libérer MonMail
Libérer objOutlook


voilà...

Anne


Bonjour,
Cet exemple de code marche.
Mais, quand une boîte de dialogue Outlook est en cours (genre Voulez-vous enregistrer les modifications....?), on obtient l'erreur ci-dessous :-)
Comment tester qu'aucune boîte de dialogue n'est active avant de lancer >>Display() ?
Merci de votre réponse
---------------
Vous avez appelé la méthode Automation 'display'.
En tentant d'invoquer la méthode <display> ou de lire la propriété <display>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
'Erreur 80004005 : Une boîte de dialogue est ouverte. Fermez cette boîte de dialogue et recommencez.'
En tentant d'invoquer la méthode <display>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
'Erreur 80004005 : Une boîte de dialogue est ouverte. Fermez cette boîte de dialogue et recommencez.'
En tentant de lire la propriété <display>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
'Erreur 8002000E, Nombre de paramètres incorrect'
En tentant d'écrire la propriété <display>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
'Erreur 80070057, Un ou plusieurs arguments sont invalides'
Posté le 29 mai 2018 - 11:13
Bonjour,

Pour gérer le cas d'outlook qui a une boîte de dialogue ouverte, je réceptionne l'exception et je filtre sur le numéro de l'erreur associée.
J'affiche ensuite le message que je veux.

QUAND EXCEPTION
SI Contient(ExceptionInfo(errMessage),"80004005") ALORS
Avertissement("Outlook ne peut pas effectuer cette action, car une boîte de dialogue est ouverte.")
SINON
SI EnModeTest() ALORS
ExceptionAffiche()
FIN
FIN
RENVOYER Faux
FIN


Je me suis créé une procédure qui va permettre d'ouvrir un nouvel email avec ce qui a été mémorisé dans la structure Email.

PROCEDURE EnvoyerAvecOutlook() : booléen
QUAND EXCEPTION
SI Contient(ExceptionInfo(errMessage),"80004005") ALORS
Avertissement("Outlook ne peut pas effectuer cette action, car une boîte de dialogue est ouverte.")
SINON
SI EnModeTest() ALORS
ExceptionAffiche()
FIN
FIN
RENVOYER Faux
FIN
//Déclaration des objets OLE
objOutlook est un objet OLE dynamique
olMailItem est un entier=0
olFormatHTML est un entier=2
objEmail est un objet OLE dynamique
j est un entier
sListeEmail est une chaîne
sFichierAttaché est une chaîne=""

objOutlook = allouer un objet OLE "Outlook.Application"

objEmail=objOutlook>>CreateItem(olMailItem)
// Destinataire
sListeEmail=""
POUR j=1 _A_ Email.NbDestinataire
SI sListeEmail>"" ALORS sListeEmail+="; "
sListeEmail+=Email.Destinataire[j]
FIN
SI sListeEmail>"" ALORS objEmail>>to = sListeEmail
// En copie
sListeEmail=""
POUR j=1 _A_ Email.NbCc
SI sListeEmail>"" ALORS sListeEmail+="; "
sListeEmail+=Email.Cc[j]
FIN
SI sListeEmail>"" ALORS objEmail>>cc = sListeEmail
// En copie cachée
sListeEmail=""
POUR j=1 _A_ Email.NbCci
SI sListeEmail>"" ALORS sListeEmail+="; "
sListeEmail+=Email.Cci[j]
FIN
SI sListeEmail>"" ALORS objEmail>>bcc = sListeEmail

// Sujet
SI Email.Sujet>"" ALORS objEmail>>subject=Email.Sujet
// Message
//%0D%0A pour faire un retour à la ligne dans le corps du messsage
SELON Vrai
CAS Email.HTML>""
// OlBodyFormat
// ====================+====
// olFormatHTML | 2
// olFormatPlain | 1
// olFormatRichText | 3
// olFormatUnspecified | 0
objEmail>>BodyFormat=olFormatHTML
objEmail>>HTMLBODY=Email.HTML
CAS Email.Message>"" : objEmail>>body=Email.Message
AUTRE CAS

FIN

// Ajouter une pièce jointe
POUR j=1 _A_ Email.NbAttache
sFichierAttaché=Email.Attache[j]
objEmail>>attachments>>Add(sFichierAttaché)
FIN

//Affichage du mail, sans l'envoyer
objEmail>>Display()

//Libération des variables
libérer objEmail
libérer objOutlook

RENVOYER Vrai
FIN