LS : Class Mail - Gratos
Dans la majorité de mes applications j'ai été amené à développer des actions de workflow, envois automatiques de messages, etc..De plus (clients assez difficiles), je devais formater les messages (couleur, gras, liens, fichiers attachés, accusé de réception, principal, replyto, et tout le tralala), - je me suis donc développé une Class Mail "perso" afin de pouvoir composer librement un message un peu comme si j'étais en train de le rédiger avec un client Notes.Je tiens donc à vous le faire partager et surtout rendre service à ceux qui ne sont pas à l'aise avec le LS.Je vous donne ci-dessous le code de la classe. Celui-ci est suivi d'un exemple d'utilisation.Bien entendu le code de cette classe est perfectible en terme de fonctionnalités. Dommage en LS on ne peut pas faire comme en JAVA, c'est-à-dire construire automatiquement la Doc de la classe au moment de la compilation et obtenir le fichier HTML correspondant... peut-être dans une version 99.99 de Notes.Si quelqu'un a de bonnes idées pour les nouvelles fonctionnalités, je suis preneur.PS : cette forme de programmation risque peut-être de choquer les débutants en LS mais sachez que cela devient de plus en plus à la mode dans les dév et c'est de plus, plus propre et plus orienté Objet... Attention, le LS Objet ne possède pas toutes les propriétés de la programmation Objet comme en C++, Java ou C#.=== ClassMail ===Public Class Mail Private MailSession As NotesSession Private MailDB As NotesDataBase Private MailDoc As NotesDocument Private RTBody As Variant Private RS As Variant Private ItemSendTo As NotesItem Private ItemCopyTo As NotesItem Private ItemBlindCopyTo As NotesItem ' Constructeur Public Sub new Set MailSession=New NotesSession Set MailDB = MailSession.CurrentDataBase Set MailDoc=New NotesDocument(MailDB) Set RTBody = MailDoc.CreateRichTextItem( "Body" ) Set RS=MailSession.CreateRichTextStyle MailDoc.Form="Memo" End Sub Public Sub SetRecipients(SendTo As Variant, CopyTo As Variant, BlindCopyTo As Variant) Set ItemSendTo = New NotesItem( MailDoc, "SendTo", SendTo ) Set ItemCopyTo = New NotesItem( MailDoc, "CopyTo", CopyTo ) Set ItemBlindCopyTo = New NotesItem( MailDoc, "CopyTo", BlindCopyTo ) End Sub Public Property Set Subject As String MailDoc.Subject=Subject End Property Public Property Set ReturnReceipt As Integer MailDoc.ReturnReceipt=ReturnReceipt End Property Public Sub SetBody(Body As Variant) If Isarray(Body) Then Forall T In Body Call RTBody.AppendText( T ) Call RTBody.AddNewLine(1) End Forall Else Call RTBody.AppendText( Body ) Call RTBody.AddNewLine(1) End If End Sub Public Sub SetDocLink(Msg As String,DocLink As NotesDocument) Call RTBody.AddNewLine(1) Call RTBody.AppendText( Msg ) Call RTBody.AppendDocLink( DocLink, MailDoc.Subject(0)) End Sub Public Sub SetDocLinkDB(Msg As String,DocLink As NotesDataBase) Call RTBody.AddNewLine(1) Call RTBody.AppendText( Msg ) Call RTBody.AppendDocLink( DocLink, MailDoc.Subject(0)) End Sub Public Sub SetAttachement(F As Variant) If Isarray(F) Then Forall Attached In F Call RTBody.EmbedObject( EMBED_ATTACHMENT, "", Attached) End Forall Else Call RTBody.EmbedObject( EMBED_ATTACHMENT, "", F) End If End Sub Public Property Set Principal As String MailDoc.Principal=Principal End Property Public Property Set ReplyTo As String MailDoc.ReplyTo=ReplyTo End Property Public Sub SetColor(Color As Variant) RS.NotesColor=Color Call RTBody.AppendStyle(RS) End Sub Public Sub SetBold(isBold As Integer) RS.Bold=isBold Call RTBody.AppendStyle(RS) End Sub Public Sub SetItalic(isItalic As Integer) RS.Italic=isItalic Call RTBody.AppendStyle(RS) End Sub Public Sub Send(isSave) Call MailDoc.Send( isSave ) End Sub Public Sub Delete Set MailDoc=Nothing Set MailSession=Nothing Set MailDB=Nothing Set RTBody=Nothing Set RS=Nothing End Sub End Class=== Comment l'utiliser dans un script LS ===Sub Initialize Dim s As notessession Dim db As notesdatabase Dim mm As Mail Set mm=New Mail() mm.subject="essai" Dim texte(2) As String Dim copyto(1) As String Dim f(1) As String copyto(0)="Admin PERSO" copyto(1)="toto@wanadoo.com" Set s=New notessession Set db=s.currentdatabase texte(0)="ligne1" texte(1)="ligne2" texte(2)="ligne3" f(0)="c:\config.sys" f(1)="c:\autoexec.bat" Call mm.SetRecipients("Admin PERSO",copyto,Null) Call mm.SetBody(texte) Call mm.SetBody("ligne4") Call mm.SetBold(True) Call mm.SetColor(COLOR_RED) Call mm.SetBody("ici liste des fichiers") Call mm.SetAttachement(f) Call mm.SetAttachement("c:\windows\win.ini") Call mm.SetBody("") Call mm.SetColor(COLOR_BLUE) Call mm.SetBold(False) Call mm.SetItalic(True) Call mm.SetBody("liste des fichiers ok") Call mm.SetDocLinkDB("voici la base",db) Call mm.Send(False) Delete mmEnd Sub