OVH Cloud OVH Cloud

envoi d'un message "toto.eml"

3 réponses
Avatar
Arno
Bonjour
j'ai un message dans un fichier "message.eml" et un=20
fichier "toto.pdf". J'aimerai envoyer le=20
message "message.eml" ayant pour fichier joint "toto.pdf",
je sais faire :
Set Out =3D CreateObject("Outlook.Application")
Set oMail =3D Out.CreateItem(0)
oMail.to =3D "toto@tata.fr"
oMail.Subject =3D "Sujet"
oMail.body =3D "Salut comment sa va?"
oMail.Attachments.Add (sFichierPdf)
oMail.Send
En fait mon probleme et de faire que oMail=20
contienne "message.eml" plutot que "Salut comment sa va?"
que est la m=E9thode ou la propriet=E9 pour faire cela ???

Merci

3 réponses

Avatar
François Picalausa
Bonjour/soir,

les fichiers eml contiennent aussi les headers de mail. tu ne peux donc pas
tout recopier bêtement dans body.
Si tu as une propriété permettant de définir l'ensemble du mail avec ses
header, il faudrait faire une lecture complète de l'eml (Open For Binary
Close, Get... tu trouveras les archives de ce groupe sur groups.google.com)
Sinon, il faudra lire l'eml et ne récupérer que la partie utile.. si Adam
Pietrasiewicz passe par ici, il pourra (je l'espre?) te dire comment
récupérer la partie kivabien de ce mail?

Sinon, en attendant:
RFC 2045: MIME Part One: Format of Internet Message Bodies
RFC 2046: MIME Part Two: Media Types
RFC 2047: MIME Part Three: Message Header Extensions for Non-ASCII Text
RFC 2048: MIME Part Four: Registration Procedures
RFC 2049: MIME Part Five: Conformance Criteria and Examples
(sur http://www.faqs.org/rfcs/index.html)

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"Arno" a écrit dans le message de
news:305d01c3fd25$619aad50$
Bonjour
j'ai un message dans un fichier "message.eml" et un
fichier "toto.pdf". J'aimerai envoyer le
message "message.eml" ayant pour fichier joint "toto.pdf",
je sais faire :
Set Out = CreateObject("Outlook.Application")
Set oMail = Out.CreateItem(0)
oMail.to = ""
oMail.Subject = "Sujet"
oMail.body = "Salut comment sa va?"
oMail.Attachments.Add (sFichierPdf)
oMail.Send
En fait mon probleme et de faire que oMail
contienne "message.eml" plutot que "Salut comment sa va?"
que est la méthode ou la proprieté pour faire cela ???

Merci


Avatar
Adam Pietrasiewicz
W pi±tek 27-lutego-2004 o godzinie 13:15:44 François Picalausa
napisa³/a

si Adam
Pietrasiewicz passe par ici, il pourra (je l'espre?) te dire comment
récupérer la partie kivabien de ce mail?



Je suis la! Je vais repondre, mais ce soir, car maintenant je cours
chez un client - un Francais d'ailleurs - eh oui, vous, les Francais,
vous etes PARTOUT, meme ici, en Pologne!


--
Pozdrawiam
Adam Pietrasiewi
Avatar
Adam Pietrasiewicz
W pi±tek 27-lutego-2004 o godzinie 12:32:28 Arno napisa³/a


Bonjour
j'ai un message dans un fichier "message.eml" et un
fichier "toto.pdf". J'aimerai envoyer le
message "message.eml" ayant pour fichier joint "toto.pdf",
je sais faire :
Set Out = CreateObject("Outlook.Application")
Set oMail = Out.CreateItem(0)
oMail.to = ""
oMail.Subject = "Sujet"
oMail.body = "Salut comment sa va?"
oMail.Attachments.Add (sFichierPdf)
oMail.Send
En fait mon probleme et de faire que oMail
contienne "message.eml" plutot que "Salut comment sa va?"
que est la méthode ou la proprieté pour faire cela ???



Pour faire ceci, si j'ai bien compris ton probleme, il faudrait lire
le fichier "message.eml", en extraire le contenu et mettre dans le
body du message Outlook.

Pour lire le fichier:

Dim Frf as long
dim Message as string

Frf = FreeFile
Open "message.eml" for input as Frf
Message = Input$(LOF(Frf),#Frf)
Close#Frf

Maintenant, dans la variable Message il y a le contenu du fichier
"message.eml". Pour en extraire le contenu qui nous interesse il faut
se debarasser de l'entete du message (car, si je comprends bien il
s'agit d'un e-mail recupere avec Outlook Express, n'est ce pas?). Pour
faire ceci il faut retrouver le premier saut de ligne double dans le
texte en faisant p.ex

Dim Position as long

Position = instr(1,Message,vbcrlf & vbcrlf)

Normalement, apres une telle operation dans la variable Position nous
recupererons la position du debut du message lui meme. Il suffit donc
ensuite de faire:

Message = Right(Message,Len(Message)-Position)

Et notre variable message va contenir grosso modo le texte du
message.

Mais, bien sur tout n'est pas si simple que cela parait.

Les utilisateurs d'Outlook Express ont une facheuse tendence
d'utiliser du HTML pour envoyer leurs e-mails ce qui complique le
probleme. Et, dans ce cas la partie recuperee apres avoir effectue les
operations decrites ci dessus ne servent pas a grande chose!

Pour palier a ce probleme on peut faire autrement encore.

En fait il suffit d'utiliser le Webbrowser qui va etre LA solution.

En fait en faisant

Wabbrewser1.Navigate "message.eml"

nous obtenons un joli texte de message que nous pouvons recuperer
par:

Message = Webbrowser1.Document.DocumentElement.OuterText

Et nous nous fichons pas mal du format de message dans ce cas. Pour
ceci il faut verifier quand meme si dans les registres, dans la clef

HKEY_CLASSES_ROOT.eml

Nous avos bien

Content Type message/rfc822

Sinon cela ne marchera pas.

Je pense que c'est tout ce que j'ai a dire a ce sujet, et j'espere
vous avoir ete utile!

--
Pozdrawiam
Adam Pietrasiewicz