Utiliser un Document Word comme corps d'un email expédié avec VFPwinsock
# 0000000718
ajouté le 04/09/2009 15:07:03 et modifié le 04/09/2009
consulté 9932 fois
Niveau
débutant
Version(s) Foxpro : VFP 9.0
Description
Après des échanges en emails sur "comment envoyer un mail avec vfpwinsock dont le corps du message (textes et images) proviennent de document word : je vous propose ci après une compilation des enchainements de petits traitements permettant d'ouvrir une document word dans word, l'enregistrer en htm et de le convertir en MHTML pour expédition.
Bien sûr pour chacun des points il existe déjà des exemples sur www.atoutfox.org
Cordialement
Francis FAURE
Code source :
* * But ouvrir un Document WORD (OLE AUTOMATION) * Enregistrer au format "HTML Filtré" (sans la soupe Office) * Converir le fichier HTML en un fichier MHTML (avec CDO) * Au final l'expédier en email comme contenu du mail avec VFPwinsock * LOCAL lsFichierDOC asString LOCAL lsFichierHTML asString LOCAL lsFichierMHTML asstring
lsFichierDOC = locfile("test.doc","DOC","Fichier Word à utiliser")
lsFichierHTML = lsFichierDOC + ".html"
lsFichierMHTML = lsFichierDOC + ".mhtml"
* Lancer word LOCAL loWord as Word.Application
loWord = CREATEOBJECT("word.application")
loWord.Visible=.T.&& pas utile, juste pour vérif
* Ouvrir .doc LOCAL loDoc
loDoc = loWord.Documents.Open(m.lsFichierDOC,.T.,.T.) && ouvrir / convertir si nécessaire / lecture seule
* créer fichier HTML filtré
#DEFINE wdFormatFilteredHTML 10
=loDoc.SaveAs(m.lsFichierHTML, wdFormatFilteredHTML)
* Fermer et Quitter word
loDoc.close
loWord.quit
loDoc = null
loWord = null
* Convertir le fichier HTML en MHTML avec CDO LOCAL loMSG as CDO.Message
loMSG = Createobject("CDO.Message")
loMSG.CreateMHTMLBody("file://"+m.lsFichierHTML)
lcStr = loMSG.GetStream() IFFILE(m.lsFichierMHTML) ERASE (m.lsFichierMHTML) && le fichier MHTML ne doit pas exister endif
lcStr.SaveToFile(m.lsFichierMHTML,1)
loMSG= null
* Expédier avec VFPwinsock set proc to vfpWinsock local loSendMail
loSendMail=CREATEOBJECT("VFP_Winsock_Send_Mail") WITH loSendMail
.SMTP_Host = "mail.mydomain.com"
.AUTH_LOGIN = "login"
.AUTH_PASSWORD = "secret"
.FROM = "my@email.com"
.TO = "your@email.com"
.Subject = "Fichier word comme corps d'un email"
.DATA_MHTML = m.lsFichierMHTML ifnot .send()
=MESSAGEBOX(.erreur,16,"Error") ENDIF endwith
loSendMail=null