ENvoie de Mail HTML par programme avec "Notes.NotesSession" de Lotus Notes 6

flocla Messages postés 9 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 30 janvier 2007 - 23 janv. 2007 à 10:48
flocla Messages postés 9 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 30 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


<!-- / message -->

13 réponses

Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
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",

Mike Gagnon
0
flocla Messages postés 9 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 30 janvier 2007
24 janv. 2007 à 10:54
Que veux tu dire par utiliser le stream de oSess ?
0
Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
24 janv. 2007 à 11:52
loSession = CREATEOBJECT( "Lotus.NotesSession" )

loStream = loSession.CreateStream()
loStream.WriteText( lcBody )








Mike Gagnon
0
flocla Messages postés 9 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 30 janvier 2007
24 janv. 2007 à 15:05
Merci je vais essayer
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
flocla Messages postés 9 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 30 janvier 2007
24 janv. 2007 à 15:13
Non ça ne fonctionne pas, merci quand même.
0
Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
25 janv. 2007 à 14:33
Je ne comprends pas ton commentaire. Cette technique fonctionne pourtant. Peux-tu poster ton code pour voir ce qui ne va pas.

Mike Gagnon
0
flocla Messages postés 9 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 30 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.
0
flocla Messages postés 9 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 30 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 -->
0
Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
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. )

Mike Gagnon
0
flocla Messages postés 9 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 30 janvier 2007
29 janv. 2007 à 15:13
Je vais essayer, merci
0
flocla Messages postés 9 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 30 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
0
Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
29 janv. 2007 à 21:45
0
flocla Messages postés 9 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 30 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..)
0
Rejoignez-nous