PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Email avec image dans le corp du message.
Email avec image dans le corp du message.
Débuté par collectif.vrp, 30 déc. 2004 10:49 - 5 réponses
Posté le 30 décembre 2004 - 10:49
Bonjours,

Je cherche depuis 4 jours à incorporer une Image dans un corp du message Email.
Je ne trouve pas la solution, malgré divers essai, je suis completement bloqué avec cette histoire, j'avoue même completement perdu !

Merci vraiment pour me dépanner.

Richard

Ci-joint un bout de code :

// Initialisation de la structure e-mail
Email.Destinataire= Table_Fichier.Col_Email
Email.ConfirmationLecture=Faux
Email.Expéditeur = MailDéfaut
Email.Sujet=Col_Sujet
Email.Message =""
Email.nbDestinataire =1
Email.Attache="c:\test.JPG"
Email.IdentifiantAttache=1
Email.NbAttache=1
SetFichierAttache("C:\Test.JPG",Email.IdentifiantAttache)
// Envoi du message
bOK=EmailEnvoieMessage(NomUser)
SI PAS bOK ALORS
SI PAS EmailOuvreSessionSMTP(Sai_Login,Sai_ServeurSmtp) ALORS
Col_Etat[i]="Abandon"
SORTIR
SINON
Col_Etat[i]="Echec"
FIN
SINON
Col_Inter[i]=Faux
Col_Etat[i]="Envoyé" ; MultitacheRepeint()
FIN


//Procédure en exemple dans la doc Page 391
PROCEDURE SetFichierAttache(NomFichier,indice)

Email.Attache[indice]=NomFichier
CID est une chaîne="cid:WDCID"+indice
Nomsimple est une chaîne=fExtraitChemin(NomFichier,fFichier+fExtension)
Pos est un entier=0
PosDébut,PosFin sont des entiers
SousChaîne est une chaîne
Pos =Position(Email.HTML,Nomsimple,Pos)
SI Pos <> 0 ALORS
PosFin=Pos+Taille(Nomsimple)
Pos --
SousChaîne=Email.HTML[[Pos]]
TANTQUE Pos >1 ET SousChaîne<>""""
Pos--
SousChaîne=Email.HTML[[Pos]]

FIN
PosDébut=Pos + 1
SousChaîne=Milieu(Email.HTML,PosDébut,PosFin-PosDébut)
Email.HTML=Remplace(Email.HTML,SousChaîne,CID)
FIN
Posté le 30 décembre 2004 - 09:48
Bonjour,

Je ne retrouve pas la procédure que tu m'as décris dans l'exemple WD8 POP3 "AttacheHTML"

Peut tu stp me la copier.

@+

Richard
Posté le 30 décembre 2004 - 12:49
Email = fichier TEXTE. voir RFC822 qui décrit l'email sur internet (google -> "RFC822")
On ne peut donc pas y incorporer des images.

Par contre on peut y mettre un texte HTML qui fait référence à des images qui sont contenues en attachement dans l'email (en fichiers attachés) OU qui sont des images en URL.

Cette dernière solution est la meilleure car outlook qui est l'outil email majoritairement utilisé par défaut n'ouvre pas les images si elles sont attachées, mais accepte de le faire si elles proviennent dynamiquement d'un site web.
Posté le 30 décembre 2004 - 12:51
Voilà :

PROCEDURE AttacheHTML(LOCAL NomFichier, Indice)

Email.Attache[Indice] = NomFichier
// Remplacer dans Email.HTML toutes les références au fichier
// par l'identifiant cid
CID est une chaîne = "cid:wdcid" + Indice

// Le fichier html n'a pas forcément été crée dans le répertoire en cours
// Il peut référencer les fichiers attachés sous des chemins quelconques
// On extrait donc le nom du fichier sans chemin
NomSimple est une chaîne = fExtraitChemin(NomFichier, fFichier + fExtension)

// Rechercher le nom du fichier dans Email.HTML
Pos est un entier = 0
PosDébut, PosFin sont des entiers
SousChaîne est une chaîne
Pos = Position(Email.HTML, NomSimple, Pos)

SI Pos <> 0 ALORS

PosFin = Pos + Taille(NomSimple)
// Rechercher la position du début de la référence
// Rechercher le delimiteur "
Pos --

SousChaîne = Email.HTML[[Pos]]
TANTQUE Pos > 1 ET SousChaîne <> """"
Pos --
SousChaîne = Email.HTML[[Pos]]
FIN
PosDébut = Pos + 1
// Remplacer
SousChaîne = Milieu(Email.HTML, PosDébut, PosFin-PosDébut)
Email.HTML = Remplace(Email.HTML, SousChaîne, CID)

FIN

A+
Posté le 30 décembre 2004 - 13:06
J'avais déjà réussi à faire ça. Il faut que dans la structure d'initialisation de l'email, tu renseignes la variable Email.HTML.

Je t'explique comment j'avais fait :
J'avais créé l'email au format HTML. (Une page Internet)
J'avais sauvegardé le code source dans un fichier texte.

Avec fOuvre, et fLit, j'avais renseigné Email.HTML :
NumFic = fOuvre(CodeSourceHTML.txt,foLecture)
Email.HTML = fLit(NumFic,1500) // 1500 = lecture complète du fichier txt

Ensuite, j'avais créé une chaine qui contenait toutes les images de l'email, par exemple :
MesImages est une chaine = "C:\Img01.gif;C:Img02.gif;C:Img03.gif" (toutes ces images sont dans l'email, donc dans le fichier CodeSource.txt)

... // Remplissage de la structure email

i est un entier = 1
Fic est une chaine = ExtraitChaine(MesImages,i,";")
TANTQUE Fic <> EOT
AttacheHTML(Fic,i) // Procédure fournie dans l'exemple WD8POP3
i++ ; Fic = ExtraitChaine(MesImages,i,";")
FIN

Email.nbattache = 3 // 3 parceque 3 images
bMsgEnv = EmailEnvoieMessage(COMPTE.Login)

En tout cas, ça devrait te mettre sur la voie, car j'avais réussi.
A+
Posté le 30 décembre 2004 - 13:09
Merci beaucoup pour ton explication, par contre pourrais tu me donner un exemple du format Htlm incorporer au message.

Richard