Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Envoyer un mail avec cdo : nettoyage ensuite ?

7 réponses
Avatar
Gloops
Bonjour tout le monde,

Je d=E9veloppe une application bureautique en int=E9rim sur un poste=20
s=E9curis=E9 (ce qui signifie qu'on ne bouge le petit doigt que dans le s=
ens=20
autoris=E9), o=F9 je dois attendre deux semaines pour avoir Access.
Le client souhaite que l'application puisse envoyer des mails.
Avec MAPI je me suis fait jeter (erreur 429 =E0 la cr=E9ation d'objet en =

lien tardif, impossible de cr=E9er une r=E9f=E9rence =E0 MAPI32.DLL), ave=
c=20
Winsock je me suis fait jeter (impossible de cr=E9er une r=E9f=E9rence =E0=
=20
Winsock.dll), avec mailto je peux envoyer un mail mais pas de pi=E8ce joi=
nte.

Avec CDO =E7a marche impec du premier coup, rien =E0 redire (enfin j'ai=20
essay=E9 sous Word, on va voir une fois qu'Access sera l=E0, mais je ne s=
uis=20
pas trop inquiet). J'aurais bien ouvert une fen=EAtre pour visualiser le =

message avant qu'il ne parte, mais enfin une fois qu'il n'y a plus que=20
=E7a ...

Pour faire les choses proprement, je voudrais v=E9rifier comment fermer c=
e=20
truc. Pour un jeu d'enregistrements, avant Set Rs =3D Nothing, il faut=20
faire Rs.Close. Et avec cdo, rien de sp=E9cial ?

Sub TestMail()
Dim ml As cdo.Message
Set ml =3D New cdo.Message
With ml
.To =3D "vaispasmettremonmailla@domain.invalid"
.AddAttachment "H:\MyDocs\Test.ppt"
.Subject =3D "Oh ben l=E0 faut voir"
.TextBody =3D "Il faut causer dans le poste."
.Send 'Et hop, dans la foul=E9e, le message part,
'et la pi=E8ce jointe avec
End With
Set ml =3D Nothing
End Sub

Introduction CDO :
http://msdn2.microsoft.com/fr-fr/library/ms998517.aspx

7 réponses

Avatar
Le pape
A ma connaissance, non, je ne crois pas...mais je ne mettrais rien à
couper quand même (:

Philippe

Gloops a écrit :
Bonjour tout le monde,

Je développe une application bureautique en intérim sur un poste
sécurisé (ce qui signifie qu'on ne bouge le petit doigt que dans le sens
autorisé), où je dois attendre deux semaines pour avoir Access.
Le client souhaite que l'application puisse envoyer des mails.
Avec MAPI je me suis fait jeter (erreur 429 à la création d'objet en
lien tardif, impossible de créer une référence à MAPI32.DLL), avec
Winsock je me suis fait jeter (impossible de créer une référence à
Winsock.dll), avec mailto je peux envoyer un mail mais pas de pièce jointe.

Avec CDO ça marche impec du premier coup, rien à redire (enfin j'ai
essayé sous Word, on va voir une fois qu'Access sera là, mais je ne suis
pas trop inquiet). J'aurais bien ouvert une fenêtre pour visualiser le
message avant qu'il ne parte, mais enfin une fois qu'il n'y a plus que
ça ...

Pour faire les choses proprement, je voudrais vérifier comment fermer ce
truc. Pour un jeu d'enregistrements, avant Set Rs = Nothing, il faut
faire Rs.Close. Et avec cdo, rien de spécial ?

Sub TestMail()
Dim ml As cdo.Message
Set ml = New cdo.Message
With ml
.To = ""
.AddAttachment "H:MyDocsTest.ppt"
.Subject = "Oh ben là faut voir"
.TextBody = "Il faut causer dans le poste."
.Send 'Et hop, dans la foulée, le message part,
'et la pièce jointe avec
End With
Set ml = Nothing
End Sub

Introduction CDO :
http://msdn2.microsoft.com/fr-fr/library/ms998517.aspx




Avatar
Gloops
Le pape a écrit, le 30/10/2007 22:30 :
A ma connaissance, non, je ne crois pas...mais je ne mettrais rien à
couper quand même (:



Surtout une mitre, j'imagine :)
Avatar
Gloops
Re,

Et aussi bien, je poserais bien la question sous un autre angle.

Comment y a-t-il lieu de formuler la question pour avoir l'aide sur les
propriétés et méthodes de CDO.Message ?

Si je clique sur le bouton d'aide dans l'explorateur d'objets ça m'ouvr e
une popup avec une page blanche, et si je cherche "CDO.Message" dans le
moteur de recherche de msdn.com, ça me sort une liste d'erreurs connues
sur CDO.

Même si les noms de propriétés sont assez parlants, et d'ailleurs j 'ai
écrit ma procédure d'envoi de mail en une quarantaine de secondes,
Microsoft nous a habitués à des rubriques d'aide plus explicites enco re.

J'ai même trouvé sur vbfrance un message de quelqu'un qui ne trouvait
pas les valeurs de cdoImportanceValues.
ça, on les a dans l'explorateur d'objets, comme le message remonte à
2004 je ne vais pas me mobiliser plus que ça pour lui répondre, mais je
suis persuadé qu'il existe quelque part une rubrique d'aide qui dit les
choses explicitement.

Si je pars de la page d'accueil (introduction à CDO) :
http://msdn2.microsoft.com/fr-fr/library/ms998517.aspx

je ne trouve pas en-dessous de lien vers la méthode Message.
Cette page est dédiée à la plateforme .Net, mais il me semble que m ême
là CDO devrait toujours avoir une méthode Message retournant un objet du
même nom.

Tout-à-l'heure sur le site j'avais une popup qui me proposait de
répondre à une enquête, mais à ce moment-là je ne savais pas en core si
j'allais trouver ce que je cherchais (même si j'ai fait une recherche
proche hier puisque j'ai posé la question ici). Pas facile à gérer, une
enquête de satisfaction aléatoire.
Avatar
Jean-marc
Gloops wrote:
Re,

Et aussi bien, je poserais bien la question sous un autre angle.

Comment y a-t-il lieu de formuler la question pour avoir l'aide sur
les propriétés et méthodes de CDO.Message ?



Hello,

tout est la:

http://msdn2.microsoft.com/en-us/library/ms526266.aspx

Le modèle objet, les classes, interfaces, champs, etc.

J'ai trouvé en Googlant (Google anglais) en faisant:

"msdn CDO message method"

Voila :-)

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Gloops
Jean-marc a écrit, le 31/10/2007 18:49 :
"msdn CDO message method"

Voila :-)




Bravo !
J'ai presque honte de ne pas y avoir pensé.

Bon alors en descendant là-dedans on trouve un exemple là :
http://msdn2.microsoft.com/en-us/library/ms526497.aspx

qui semble confirmer qu'effectivement il n'y a rien à fermer après
l'envoi du message, c'est tout simple.

L'exemple m'intrigue toutefois : l'envoi du mail se fait avant void
main(), et il n'est pas inclus dans une procédure.

Ah ben gloops alors ...
D'habitude, void main(), c'est là où le programme commence son
exécution, non ?
Avatar
Jean-marc
Gloops wrote:
Jean-marc a écrit, le 31/10/2007 18:49 :
"msdn CDO message method"

Voila :-)




Bravo !
J'ai presque honte de ne pas y avoir pensé.

Bon alors en descendant là-dedans on trouve un exemple là :
http://msdn2.microsoft.com/en-us/library/ms526497.aspx

qui semble confirmer qu'effectivement il n'y a rien à fermer après
l'envoi du message, c'est tout simple.

L'exemple m'intrigue toutefois : l'envoi du mail se fait avant void
main(), et il n'est pas inclus dans une procédure.

Ah ben gloops alors ...
D'habitude, void main(), c'est là où le programme commence son
exécution, non ?



Cet exemple n'est probablement qu'un ... exemple !

Tel quel, ça ne compile bien sur pas.

Il y a en fait 2 programmes attachés;
un en VB ou en script, l'autre en C++.


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Gloops
Jean-marc a écrit, le 31/10/2007 20:46 :
Gloops wrote:
Jean-marc a écrit, le 31/10/2007 18:49 :
"msdn CDO message method"

Voila :-)



Bravo !
J'ai presque honte de ne pas y avoir pensé.

Bon alors en descendant là-dedans on trouve un exemple là :
http://msdn2.microsoft.com/en-us/library/ms526497.aspx

qui semble confirmer qu'effectivement il n'y a rien à fermer après
l'envoi du message, c'est tout simple.

L'exemple m'intrigue toutefois : l'envoi du mail se fait avant void
main(), et il n'est pas inclus dans une procédure.

Ah ben gloops alors ...
D'habitude, void main(), c'est là où le programme commence son
exécution, non ?



Cet exemple n'est probablement qu'un ... exemple !



Euh ... Tu veux dire plusieurs ?


Tel quel, ça ne compile bien sur pas.

Il y a en fait 2 programmes attachés;
un en VB ou en script, l'autre en C++.





Bon, en fait, j'ai testé quelque chose qui ressemble bien à ce qu'il y a
jusqu'à avant main() -c'est simple je l'ai publié dans mon précé dent
message-, et ça a bien envoyé le mail.

Dans l'exemple personne ne parle de fermer quelque chose après, alors
donc, je vais partir du principe que j'ai bien travaillé. :)