ENvoie de Mail HTML par programme avec "Notes.NotesSession" de Lotus Notes 6
flocla
Messages postés9Date d'inscriptionmardi 10 janvier 2006StatutMembreDernière intervention30 janvier 2007
-
23 janv. 2007 à 10:48
flocla
Messages postés9Date d'inscriptionmardi 10 janvier 2006StatutMembreDernière intervention30 janvier 2007
-
30 janv. 2007 à 13:59
Bonjour a tous,
Voila, j'ai un problème pour envoyé un Mail HTML en passant par l'API de Lotus Notes 6 "Notes.NotesSession". J'ai récupéré certaines fonctions qui me permettent de créer un message texte normal et la possibilité de joindre une pièce jointe, mais je n'ai pas la fonction ou la commande me permettant d'obliger Lotus Notes a interpreter le code HTML et a l'affiché lors de l'ouverture du message, il reste en texte, la fonction body me semble incapable de le faite et je me retrouve avec un message contenant l'intégralité des codes HTML non interprété. Existe t'il une fonction ou une astuce dans "Notes.NotesSession" permettant de faire ça.
Voici le petit programme en Foxpro 6 qui me permet d'envoyer des messages uniquement en mode "texte" pour l'instant. Pouvez vous me venir en aide, je vous en remerci d'avance.
procedure eMail
parameter VpcTitre, VpcAdresse, VpcTexte, VpcPieceJ
*** Déclaration de l'objet
oSess = createObject("Notes.NotesSession")
oDB = oSess.GETDATABASE("","")
oDB.OPENMAIL
Flag = .T.
oDB.OpenMail
if !oDB.IsOpen
Flag = oDB.Open("","")
endif
if Flag = .F.
=messagebox("Impossible d'ouvrir Lotus Notes : " + oDB.Serveur + " " + oDB.Filepath)
do exit_SendAttachement
endif
*** Ecriture du message
oDoc = oDB.CREATEDOCUMENT
oItem = oDoc.CREATERICHTEXTITEM("BODY")
oDoc.form = "Memo"
oDoc.Subject = VpcTitre
oDoc.SendTo = VpcAdresse && exemple "adresse@adresse.fr"
oDoc. Body = VpcTexte
oDoc.PostDate = date()
*** Attache de la pièce jointe
if !empty(VpcPiecej)
oItem.EmbedObject(1454,"",VpcPieceJ)
oDoc.visable = .T.
endif
*** Envoie du message
oDoc.Send(.F.)
oSess = ""
oDB = ""
oDoc = ""
oItem = ""
release oSess
endproc
Mike Gagnon
Messages postés381Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention24 octobre 20132 23 janv. 2007 à 19:09
Pas si facile que cela et vu que je n'ai pas Lotus notes sur mon systeme c'est encore plus difficile. Mais l'idée est de 'batir' le corps du message en utilisant le Stream de ta variable oSess. et en lui ajoutant un 'header' comme "text/html;charset=iso-8859-1",
flocla
Messages postés9Date d'inscriptionmardi 10 janvier 2006StatutMembreDernière intervention30 janvier 2007 27 janv. 2007 à 14:44
Je n'avais pas vu correctement le code la dernière fois, je vais essayer lundi au travail, je n'ai pas lotus chez moi, encore merci de m'avoir mis sur la voix. Je laisserai un petit message pour la suite de l'essai.
flocla
Messages postés9Date d'inscriptionmardi 10 janvier 2006StatutMembreDernière intervention30 janvier 2007 29 janv. 2007 à 08:10
Voici le nouveau code que j'ai essayé suite a tes conseils, les deux lignes de codes supplémentaire en bleu ne créent pas d'erreur, mais ça ne fonctionne toujours pas, j'ai toujours le texte du message non interprété.
procedure eMail
parameter VpcTitre, VpcAdresse, VpcTexte, VpcPieceJ
*** Déclaration de l'objet
oSess = createObject("Notes.NotesSession")
loStream = oSess.CreateStream()
loStream.WriteText("text/html;charset=iso-8859-1")
oDB = oSess.GETDATABASE("","")
oDB.OPENMAIL
Flag = .T.
oDB.OpenMail
if !oDB.IsOpen
Flag = oDB.Open("","")
endif
if Flag = .F.
=messagebox("Impossible d'ouvrir Lotus Notes : " + oDB.Serveur + " " + oDB.Filepath)
do exit_SendAttachement
endif
*** Ecriture du message
oDoc = oDB.CREATEDOCUMENT
oItem = oDoc.CREATERICHTEXTITEM("BODY")
oDoc.form = "Memo"
oDoc.Subject = VpcTitre
oDoc.SendTo = VpcAdresse && exemple "adresse@adresse.fr"
oDoc. Body = VpcTexte
oDoc.PostDate = date()
*** Attache de la pièce jointe
if !empty(VpcPiecej)
oItem.EmbedObject(1454,"",VpcPieceJ)
oDoc.visable = .T.
endif
*** Envoie du message
oDoc.Send(.F.)
oSess = ""
oDB = ""
oDoc = ""
oItem = ""
release oSess
endproc
<!-- / message -->
Mike Gagnon
Messages postés381Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention24 octobre 20132 29 janv. 2007 à 14:18
Il te manque le Body qui doit aussi aller avec le Stream.
loMaildb = loSession.getdatabase(lcServer, lcMaildbName )
* create a document/email for the mail database
loMaildoc = loMaildb.CreateDocument()
* Who do we send it to
loMaildoc.ReplaceItemValue( "Form", "Memo" )
IF !EMPTY( laSendTo )
loMaildoc.ReplaceItemValue( "SendTo", @laSendTo )
ENDIF
IF !EMPTY( laCC )
loMaildoc.ReplaceItemValue( "CopyTo", @laCC )
ENDIF
IF !EMPTY( laBcc )
loMaildoc.ReplaceItemValue( "BlindCopyTo", @laBcc )
ENDIF
* The subject
loMaildoc.replaceitemValue( "Subject", lcSubject )
* The Body
loStream = loSession.CreateStream()
loStream.WriteText( lcBody )
* The Body MIME type
loBodyMime = loMailDoc.CreateMIMEEntity()
loBodyMime.SetContentFromText( loStream, "text/html;charset=iso-8859-1", .f. )
flocla
Messages postés9Date d'inscriptionmardi 10 janvier 2006StatutMembreDernière intervention30 janvier 2007 29 janv. 2007 à 16:31
Voici le code en entié, modifié sur tes conseils, il fonctionne bien, mais toujours sans les codes HTML interprétés comme il devrait. Je me retrouve avec un message qui contient "Essai de Texte" dans le Body sans le formatage de la police ni de la couleur choisie.
En bleue mon code
En Rouge le tien
VpcTitre1 = "Liste des Autorisations avec dates invalides"
VpcAdresse1 = "
[mailto:adresse@adresse.fr
adresse@adresse.fr
]
"
*** Mise en place d'un texte HTML dans la variable VpcTexte1 ***
VpcTexte1 = "<html>" + chr(13)
VpcTexte1 = VpcTexte1 + 'Essai de Texte'
VpcTexte1 = VpcTexte1 + chr(13) + "</html>" + chr(13)
*************************************************
VpcPJointe = ""
VpcCC = ""
VpcBcc = ""
do eMail with VpcTitre1, VpcAdresse1, VpcTexte1, VpcPJointe, VpcCC, VpcBcc
return
**************************************************************
*** procedure pour envoie de message par Lotus Notes ***
**************************************************************
*** VpcTitre = Titre du message ***
*** VpcAdresse = Adresse du correspondant ***
*** VpcTexte = Texte du message ***
*** VpcCC = Adresse en copie ***
*** VpcBcc = Adresse destinataires multiples ***
**************************************************************
procedure eMail
parameter VpcTitre, VpcAdresse, VpcTexte, VpcPieceJ, laCC, laBcc
*** Déclaration de l'objet
oSess = createObject("Notes.NotesSession")
oDB = oSess.GETDATABASE("","")
oDB.OPENMAIL
Flag = .T.
oDoc = oDB.CREATEDOCUMENT
**********************
**** Code changé *******
**********************
* Who do we send it to
oDoc.ReplaceItemValue( "Form", "Memo" )
IF !EMPTY(VpcAdresse)
oDoc.ReplaceItemValue( "SendTo", VpcAdresse)
ENDIF
IF !EMPTY( laCC )
oDoc.ReplaceItemValue( "CopyTo", laCC )
ENDIF
IF !EMPTY( laBcc )
oDoc.ReplaceItemValue( "BlindCopyTo", laBcc )
ENDIF
* The subject
oDoc.replaceitemValue( "Subject", VpcTitre )
* The Body
loStream = oSess.CreateStream()
loStream.WriteText( VpcTexte )
* The Body MIME type
loBodyMime = oDoc.CreateMIMEEntity()
loBodyMime.SetContentFromText( loStream, "text/html;charset=iso-8859-1", .F. )
****************************************
****************************************
****************************************
if !empty(VpcPiecej)
oItem.EmbedObject(1454,"",VpcPieceJ)
oDoc.visable = .T.
endif
*** Envoie du message
oDoc.Send(.F.)
oSess = ""
oDB = ""
oDoc = ""
oItem = ""
*********************************************
release oSess
endproc
flocla
Messages postés9Date d'inscriptionmardi 10 janvier 2006StatutMembreDernière intervention30 janvier 2007 30 janv. 2007 à 13:59
Merci pour tout, j'ai récupéré le code de l'adresse et je vais faire des essais, j'ai déjà trouvé de nouvelles fonctions grace a cette adresse, mais malheureusement pas pour mon Texte en HTML. Je suis arrivé par hasard a créer une piece jointe que je ne métrise pas au niveau du nom du fichier, il me crée un nom "C.DTF" ?? c'est toujours le même nom. Mais par contre, qui est formatée en HTML (couleur, police etc..)