Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Sommaire

Table of Contents

...

 Comme indiqué précédemment, les tags sont formatés sous cette forme :[@nom formule ou fonction]. Chaque tag trouvé dans le texte est interprété et remplacé par sa valeur dans le contexte où la fonction a été appelée.

Le tag [@SILMAILMESSAGE.Message] correspond à la variable qui contient le contenu saisi du corps du message.

...

Cette action a pour effet d’afficher la fenêtre « Nouveau message » qui permet de saisir les caractéristiques d’envoi d’un courriel et de l’envoyer. Cependant cela n’est pas la vocation de cette application.

ECRAN D‑3 : Nouveau message

 

...

Le principe de fonctionnement est identique à celui qui est décrit dans le paragraphe : Envoyer un mail de test.

 

...

5. Les neuf fonctions de paramétrage.

Les fonctions de paramétrages ont été créées pour permettre l’envoi de messages par programmation en utilisant les informations saisies dans les applications suivantes dédiées de Silog :

  • Configuration des serveurs d'envoi,

  • Modèles de mail.

 

Le  Le principe de fonctionnement de ces fonctions réside dans l’utilisation de l’application « Message Mail » pour envoyer des messages qui peuvent être enregistrés dans le système pour en conserver une trace.

Toutes les fonctions d’envoi de messages sont préfixées par « MAIL. ».

  • MAIL.NewMessage

  • MAIL.AddRecipient

  • MAIL.SetReplyAddress

  • MAIL.SetFrom

  • MAIL.SetObject

  • MAIL.SetMessage

  • MAIL.AddAttachment

  • MAIL.SendMessage

  • MAIL.SendNewMessage

L’ensemble de ces fonctions permet de constituer un message basé sur un modèle avant son envoi par appels successifs à des fonctions adaptées pour chacune des propriétés qui constituent le message.

...

Les tags doivent être rédigés sous la forme [@formule] où la formule peut être une variable de l’application ou encore l’appel d’une fonction de l’ERP. Ces tags sont ensuite interprétés pour être remplacés par la valeur en cours de l’application mère.

 

Il est ainsi possible d’ajouter le nom de l’utilisateur ERP en signature du message avec le tag [@g_c_user$] ou le numéro de la commande avec le tag [@COME.NoCommande].

...

5.1. MAIL.NewMessage

...

Définition :

La fonction MAIL.NewMessage a pour vocation de créer un nouveau message qui peut être modifié avant d’être envoyé. 

Syntaxe :

Mail.NewMessage(p1) 

  • p1 : Le paramètre "Code modèle" permet de spécifier le modèle à utiliser pour créer le message. Il n’est pas obligatoire.

...

Cette fonction charge l’application "MAILMESSAGEMAILMESSAGE" et commence la création d’un nouveau message à envoyer.

...

Si le code modèle est renseigné et si le modèle correspondant contient des tags de formule, ceux-ci seront remplacés par leurs valeurs dans le contexte dans lequel la fonction est appelée.

...

5.2. MAIL.AddRecipient

...

Définition :

La fonction MAIL.AddRecepient permet d’ajouter une adresse email en destinataire du courriel en cours de création. 

Cette fonction n’est utilisable que si la fonction MAIL.NewMessage a été appelée auparavant.

 Syntaxe :

MAIL.AddRecipient(p1,p2,p3)

 

Cette fonction comporte les paramètres suivants  :

  • p1 : Adresse email (obligatoire) pour indiquer l’adresse du destinataire du courriel.

  • p2 : Le nom du destinataire (facultatif) .

  • p3 : Le type du destinatire (facultatif) qui correspond à A (par défaut), Cc ou Cci.

o    0 => A

o    1 => Cc

o    2 => Cci

...

Lorsque le nom est indiqué, l’adresse du destinataire est composée comme ceci :

nom du destinataire <destinataire@mail.fr>

 

...

5.3.   MAIL.SetReplyAddress

Définition :

Cette fonction permet de définir l’adresse de réponse si elle est différente de l’adresse de l’expéditeur.

Syntaxe :

MAIL.SetReplyAddress(P1)

Cette fonction comporte les paramètres suivants  :

  • p1 : Adresse email (obligatoire) pour indiquer l’adresse du de réponse du courriel.

 

...

5.4. MAIL.SetFrom

Définition : 

Cette fonction permet de définir l’adresse de l’expéditeur.

Tous les serveurs de messagerie n’autorisent pas que le nom de l’émetteur soit différent de l’utilisateur connecté pour des raisons de sécurité évidente et éviter l’envoi de mail au nom d’un autre

Certains serveur d’envoi comme office 365 interdisent donc de modifier l’adresse de l’émetteur. Une erreur d’envoi de code 11207, par exemple, apparait alors et le mail n’est pas envoyé. L’utilisation de cette fonction n’est alors pas possible.

...

Syntaxe :

MAIL.SetFrom(P1) 

p1 : Adresse email (obligatoire) pour indiquer l’adresse de l’expéditeur.

 

...

5.5. MAIL.SetObject

...

Définition :

Cette fonction permet de renseigner l’objet du message avec le texte passé en paramètre de la fonction.

 

Cette fonction n’est utilisable que si la fonction MAIL.NewMessage a été appelée auparavant. 

Syntaxe :

MAIL.SetObject(p1)

 p1 :

...

Objet du message.

...

5.6. MAIL.SetMessage

...

Définition :

Cette fonction permet de renseigner le corps du message avec le texte passé en paramètre. 

Cette fonction n’est utilisable que si la fonction MAIL.NewMessage a été appelée auparavant.

 

Syntaxe :

MAIL.SetMessage(p1)

 

  • p1 : Corps du message

...

5.7. MAIL.AddAttachment

Définition :

La fonction MAIL.AddAttachment permet d’ajouter le fichier passé en paramètre en pièce jointe du message en cours de création. 

Cette fonction n’est utilisable que si la fonction MAIL.NewMessage a été appelée auparavant. 

La fonction retourne "11001" si le fichier passé en paramètre est introuvable. 

Syntaxe :

MAIL.AddAttachment(p1) 

  • p1 : Le nom du fichier passé en paramètre peut être relatif au chemin de Silog ou complet avec le chemin d’accès.

...

5.8.  MAIL.SendMessage

Définition :

Cette fonction déclenche l’envoi du message en cours de création.

 

Cette fonction n’est utilisable que si la fonction MAIL.NewMessage a été appelée auparavant.

 

Syntaxe :

MAIL.SendMessage(p1, p2) 

La fonction comporte deux paramètres :

  •  

...

  • p1 : Pour définir si le message doit être affiché avant d’être envoyé pour permettre à l’utilisateur de modifier le message.

o    0 => Non

o    1 => Oui

  •  

...

  • p2 : Ce paramètre permet de définir si le message doit être enregistré dans le système pour conserver une trace.

o    0 => Non

o    1 => Oui

 

...

5.9. MAIL.SendNewMessage

 

Définition :

Cette fonction permet de déclencher la création d’un nouveau message à partir d’un code modèle et déclenche l’envoi avec affichage ou non du message et enregistrement dans le système.

...

MAIL.SendNewMessage(p1, p2,p3)

 

La fonction comporte trois paramètres :

 

  • p1 : Code modèle à utiliser.

 

  • p2 : Pour définir si le message doit être affiché avant d’être envoyé pour permettre à l’utilisateur de modifier le message avant son envoi.

o    0 => Non

o    1 => Oui

  •  

...

  • p3 :

Ce paramètre permet de définir si le message doit être enregistré dans le système pour conserver une trace de celui-ci.

o    0 => Non

o    1 => Oui

 

 

...

6. Exemple de paramétrage d’envoi par courriel d’un accusé réception de commande et de prise de rendez-vous.

 

...

6.1. Description de la fonctionnalité paramétrée

L'exemple suivant permet d'envoyer un courriel d'accusé réception d'une commande client avec en pièces jointes le fichier pdf relatif à l'accusé réception ainsi qu'un fichier d'extension ICS relatif à la prise de rendez-vous pour la livraison.

 

Pour cet exemple, les variables utilisées sont les suivantes :

...

i01102$=COME.CodeClient=> Code du client

 

Le répertoire de création des pièces jointes est pour cet exemple le sous-répertoire portant le nom du code client dans le répertoire « c:/CDE » (ce répertoire pourrait être un chemin réseau, un répertoire partagé pour tous). 

Exemple pour le client de code « 4025 », les pièces jointes sont enregistrées dans le répertoire portant le libellé du code client. 

...

Le modèle d'Email utilisé (Application "Modèles de mail") est dans l'exemple : "EnvoiCDE" vu précédemment. 

...

Dans l'application  "Commandes et accusés réceptions" , voici les zones ajoutées pour le rendez-vous  associé  à la pièce ( des « VarAlphaUtil ») :  

...

Les heures sont formatées comme indiqué ci-dessous : 

...

Après sélection du bouton "Envoyer l'accusé et le RDV" de l’application « Commandes et accusés de réception », une fenêtre apparaît avec les données et les pièces jointes pré alimentées.  

...

Après sélection du bouton « Envoyer » :

 

Réception du message, le modèle HTML est interprété : 

...

L'accusé réception se trouve en piece jointe :

 

 

...

Le Rendez-vous pour la livraison est en pièce jointe également :                                               

 

 

 

...

6.2. Paramétrage de l’envoi de courriel :

Pour ce paramétrage, le courriel est envoyé via la sélection d’un bouton  dans l’entête de la commande. 

Sans prise en charge des caractères accentués dans la description du RDV (les fonctions de manipulation de fichiers ne savent pas gérer le format UTF-8)  :  

Code Block
// Déclaration de la variable qui contient le contenu du fichier ICS

...


SilDeclareVariableAlpha("Contenu$", "ContenuICS")

...


Contenu$=""

...

 



// Création du contenu du fichier ICS de prise de RDV (format standard ICS) 

...


StringListAddLine("Contenu$","BEGIN:VCALENDAR")

...


StringListAddLine("Contenu$","PRODID:-//Microsoft Corporation//Outlook 15.0 MIMEDIR//EN")

...


StringListAddLine("Contenu$","VERSION:2.0")

...


StringListAddLine("Contenu$","METHOD:PUBLISH")

...


StringListAddLine("Contenu$","X-MS-OLK-FORCEINSPECTOROPEN:TRUE")

...


StringListAddLine("Contenu$","BEGIN:VEVENT")

...


StringListAddLine("Contenu$","CLASS:PUBLIC")

...


StringListAddLine("Contenu$","CREATED:"+LEFT$(p_dat_gpao$,8)+"T000000")

...


StringListAddLine("Contenu$","DESCRIPTION:" + f01199$(3)+ " (" +COME.NoAccuseReception + ")""\n")

...


StringListAddLine("Contenu$","DTEND:"+LEFT$(f01199$(1),8)+"T"+f01199$(5))

...


StringListAddLine("Contenu$","DTSTAMP:"+LEFT$(p_dat_gpao$,8)+"T000000")

...


StringListAddLine("Contenu$","DTSTART:" + LEFT$(f01199$(0),8)+"T"+f01199$(4))

...


StringListAddLine("Contenu$","LAST-MODIFIED:"+LEFT$(p_dat_gpao$,8)+"T000000")

...


StringListAddLine("Contenu$","LOCATION:" +f01199$(2))

...


StringListAddLine("Contenu$","PRIORITY:5")

...


StringListAddLine("Contenu$","SEQUENCE:0")

...


StringListAddLine("Contenu$","SUMMARY;LANGUAGE=fr:"+ f01199$(3)+ " (" +COME.NoAccuseReception + ")")

...


StringListAddLine("Contenu$","TRANSP:OPAQUE")

...


StringListAddLine("Contenu$","UID:1")

...


StringListAddLine("Contenu$","X-ALT-DESC;FMTTYPE=text/html:<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 3.2//E")

...


StringListAddLine("Contenu$","    N"">\n<HTML>\n<HEAD>\n<META NAME=""Generator"" CONTENT=""MS" +" Exchange Server ve")

...


StringListAddLine("Contenu$","    rsion rmj.rmm.rup.rpr"">\n<TITLE></TITLE>\n</HEAD>\n<BODY>\n<!-- Converted ")

...


StringListAddLine("Contenu$","    from text/rtf format -->\n\n<P DIR=LTR><SPAN LANG=""fr""><FONT FACE="""+"Calibri")

...


StringListAddLine("Contenu$","    "">"+f01199$(6) + "</FONT></SPAN><SPAN LANG=""fr""></SPAN></P>\n\n</BODY>\n</HTML>")

...


StringListAddLine("Contenu$","X-MICROSOFT-CDO-BUSYSTATUS:BUSY")

...


StringListAddLine("Contenu$","X-MICROSOFT-CDO-IMPORTANCE:1")

...


StringListAddLine("Contenu$","X-MICROSOFT-DISALLOW-COUNTER:FALSE")

...


StringListAddLine("Contenu$","X-MS-OLK-AUTOFILLLOCATION:FALSE")

...


StringListAddLine("Contenu$","X-MS-OLK-CONFTYPE:0")

...


StringListAddLine("Contenu$","END:VEVENT")

...


StringListAddLine("Contenu$","BEGIN:VALARM")

...


StringListAddLine("Contenu$","TRIGGER:-PT15M")

...


StringListAddLine("Contenu$","ACTION:DISPLAY")

...


StringListAddLine("Contenu$","DESCRIPTION:Reminder")

...


StringListAddLine("Contenu$","END:VALARM")

...


StringListAddLine("Contenu$","END:VCALENDAR")

...

 



// Création du fichier pdf de l'accusé réception avec la fonction SEE

...


SilExecuterEtat("EXPORT,C:\CDE\"+COME.CodeClient+"\"+COME.NoAccuseReception+".pdf,PDF","conf_edit1.rpt","{?Du="+ f01105$+"}{?Au="+ f01105$+"}")

...

 



// Création du fichier ICS et réinitialisation de la variable.

...


FileWriteAllText("C:\CDE\" + COME.CodeClient + "\" + COME.NoAccuseReception +".ics","Contenu$",1)

...


Contenu$=""

...

 



// Création du Courriel  et modification des données du modèle

...


MAIL.NewMessage("EnvoiCDE")

...


MAIL.AddRecipient("[@CLI.Telex2]", "", 0)

...


MAIL.SetObject("Accusé réception [@COME.NoAccuseReception] de la commande [@COME.NoCommande]") 

...


MAIL.SetMessage("Ceci est un test")

...

 



// Ajout des deux pièces jointes :

...


MAIL.AddAttachment("C:\CDE\" + COME.CodeClient + "\" + COME.NoAccuseReception +".pdf")

...


MAIL.AddAttachment("C:\CDE\" + COME.CodeClient + "\" + COME.NoAccuseReception +".ics")

...

 



// Envoi du mail avec prévisualisation

...


MAIL.SendMessage(1,1)

 Avec prise en charge des caractères accentués dans la description du RDV (les fonctions de manipulation de fichiers ne savent pas gérer le format UTF-8)  :  

Code Block
// Déclaration de la variable qui contient le contenu du fichier ICS

...


SilDeclareVariableAlpha("Contenu$", "ContenuICS")

...


Contenu$=""

...

 



// Gestion des caractères accentués dans la description du RDV

...


f01199$(6)=StringReplace(f01199$(6),"à", "&agrave;",1)

...


f01199$(6)=StringReplace(f01199$(6),"â", "&acirc;",1)

...


f01199$(6)=StringReplace(f01199$(6),"é", "&eacute;",1)

...


f01199$(6)=StringReplace(f01199$(6),"è", "&egrave;",1)

...


f01199$(6)=StringReplace(f01199$(6),"ê", "&ecirc;",1)

...


f01199$(6)=StringReplace(f01199$(6),"î", "&icirc;",1)

...


f01199$(6)=StringReplace(f01199$(6),"ï", "&iuml;",1)

...


f01199$(6)=StringReplace(f01199$(6),"œ", "&oelig;",1)

...


f01199$(6)=StringReplace(f01199$(6),"ù", "&ugrave;",1)

...


f01199$(6)=StringReplace(f01199$(6),"û", "&ucirc;",1)

...


f01199$(6)=StringReplace(f01199$(6),"ç", "&ccedil;",1)

...


f01199$(6)=StringReplace(f01199$(6),"ô", "&ocirc;",1)  

...

 


f01199$(6)=StringReplace(f01199$(6),"À", "&Agrave;",1)

...


f01199$(6)=StringReplace(f01199$(6),"Â", "&Acirc;",1)

...


f01199$(6)=StringReplace(f01199$(6),"É", "&Eacute;",1)

...


f01199$(6)=StringReplace(f01199$(6),"È", "&Egrave;",1)

...


f01199$(6)=StringReplace(f01199$(6),"Ê", "&Ecirc;",1)

...


f01199$(6)=StringReplace(f01199$(6),"Î", "&Icirc;",1)

...


f01199$(6)=StringReplace(f01199$(6),"Œ", "&Iuml;",1)

...


f01199$(6)=StringReplace(f01199$(6),"œ", "&OElig;",1)

...


f01199$(6)=StringReplace(f01199$(6),"Ù", "&Ugrave;",1)

...


f01199$(6)=StringReplace(f01199$(6),"Û", "&Ucirc;",1)

...


f01199$(6)=StringReplace(f01199$(6),"Ç", "&Ccedil;",1)

...


f01199$(6)=StringReplace(f01199$(6),"Ô", "&Ocirc;",1)  

...

 


f01199$(6)=StringReplace(f01199$(6),"€", "&euro;",1)

...


f01199$(6)=StringReplace(f01199$(6),"¥", "&yen;",1)

...


f01199$(6)=StringReplace(f01199$(6),"©", "&copy;",1)

...


f01199$(6)=StringReplace(f01199$(6),"®", "&reg;",1)

...

 



// Création du contenu du fichier ICS de prise de RDV (format standard ICS)  

...


StringListAddLine("Contenu$","BEGIN:VCALENDAR")

...


StringListAddLine("Contenu$","PRODID:-//Microsoft Corporation//Outlook 15.0 MIMEDIR//EN")

...


StringListAddLine("Contenu$","VERSION:2.0")

...


StringListAddLine("Contenu$","METHOD:PUBLISH")

...


StringListAddLine("Contenu$","X-MS-OLK-FORCEINSPECTOROPEN:TRUE")

...


StringListAddLine("Contenu$","BEGIN:VEVENT")

...


StringListAddLine("Contenu$","CLASS:PUBLIC")

...


StringListAddLine("Contenu$","CREATED:"+LEFT$(p_dat_gpao$,8)+"T000000")

...


StringListAddLine("Contenu$","DESCRIPTION:" + f01199$(3)+ " (" +COME.NoAccuseReception + ")""\n")

...


StringListAddLine("Contenu$","DTEND:"+LEFT$(f01199$(1),8)+"T"+f01199$(5))

...


StringListAddLine("Contenu$","DTSTAMP:"+LEFT$(p_dat_gpao$,8)+"T000000")

...


StringListAddLine("Contenu$","DTSTART:" + LEFT$(f01199$(0),8)+"T"+f01199$(4))

...


StringListAddLine("Contenu$","LAST-MODIFIED:"+LEFT$(p_dat_gpao$,8)+"T000000")

...


StringListAddLine("Contenu$","LOCATION:" +f01199$(2))

...


StringListAddLine("Contenu$","PRIORITY:5")

...


StringListAddLine("Contenu$","SEQUENCE:0")

...


StringListAddLine("Contenu$","SUMMARY;LANGUAGE=fr:"+ f01199$(3)+ " (" +COME.NoAccuseReception + ")")

...


StringListAddLine("Contenu$","TRANSP:OPAQUE")

...


StringListAddLine("Contenu$","UID:1")

...


StringListAddLine("Contenu$","X-ALT-DESC;FMTTYPE=text/html:<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 3.2//E")

...


StringListAddLine("Contenu$","    N"">\n<HTML>\n<HEAD>\n<META NAME=""Generator"" CONTENT=""MS" +" Exchange Server ve")

...


StringListAddLine("Contenu$","    rsion rmj.rmm.rup.rpr"">\n<TITLE></TITLE>\n</HEAD>\n<BODY>\n<!-- Converted ")

...


StringListAddLine("Contenu$","    from text/rtf format -->\n\n<P DIR=LTR><SPAN LANG=""fr""><FONT FACE="""+"Calibri")

...


StringListAddLine("Contenu$","    "">"+f01199$(6) + "</FONT></SPAN><SPAN LANG=""fr""></SPAN></P>\n\n</BODY>\n</HTML>")

...


StringListAddLine("Contenu$","X-MICROSOFT-CDO-BUSYSTATUS:BUSY")

...


StringListAddLine("Contenu$","X-MICROSOFT-CDO-IMPORTANCE:1")

...


StringListAddLine("Contenu$","X-MICROSOFT-DISALLOW-COUNTER:FALSE")

...


StringListAddLine("Contenu$","X-MS-OLK-AUTOFILLLOCATION:FALSE")

...


StringListAddLine("Contenu$","X-MS-OLK-CONFTYPE:0")

...


StringListAddLine("Contenu$","END:VEVENT")

...


StringListAddLine("Contenu$","BEGIN:VALARM")

...


StringListAddLine("Contenu$","TRIGGER:-PT15M")

...


StringListAddLine("Contenu$","ACTION:DISPLAY")

...


StringListAddLine("Contenu$","DESCRIPTION:Reminder")

...


StringListAddLine("Contenu$","END:VALARM")

...


StringListAddLine("Contenu$","END:VCALENDAR")

...

 



// Création du fichier pdf de l'accusé réception avec la fonction SEE

...


SilExecuterEtat("EXPORT,C:\CDE\"+COME.CodeClient+"\"+COME.NoAccuseReception+".pdf,PDF","conf_edit1.rpt","{?Du="+ f01105$+"}{?Au="+ f01105$+"}")

...

 

 



// Création du fichier ICS et réinitialisation de la variable.

...


FileWriteAllText("C:\CDE\" + COME.CodeClient + "\" + COME.NoAccuseReception +".ics","Contenu$",1)

...


Contenu$=""

...

 



// Création du Courriel  et modification des données du modèle

...


MAIL.NewMessage("EnvoiCDE")

...


MAIL.AddRecipient("[@CLI.Telex2]", "", 0)

...


MAIL.SetObject("Accusé réception [@COME.NoAccuseReception] de la commande [@COME.NoCommande]") 

...


MAIL.SetMessage("Ceci est un test")

...

 



// Ajout des deux pièces jointes :

...


MAIL.AddAttachment("C:\CDE\" + COME.CodeClient + "\" + COME.NoAccuseReception +".pdf")

...


MAIL.AddAttachment("C:\CDE\" + COME.CodeClient + "\" + COME.NoAccuseReception +".ics")

...


 

...


// Envoi du mail avec prévisualisation

...


MAIL.SendMessage(1,1)