Sommaire
1. Introduction
Silog met à la disposition trois applications qui permettent d’utiliser sept fonctions d’envoi de courriels.
Une application pour configurer les serveurs d’envoi de courriels. Chaque serveur peut être associé à un utilisateur de Silog : « Configuration des serveurs d’envoi » .
Une application pour créer des modèles de courriels contenant des tags de formules Silog interprétés lors de l’envoi des courriels : « Modèles de mail ». Un modèle peut être associé à un fichier HTML pour la mise en page du corps du message.
Une application qui permet d’historiser les courriels envoyés par L’ERP : « Messages Mail ».
Neuf fonctions d’envoi de courriels qui permettent de piloter par paramétrage l’envoi des courriels en utilisant les serveurs configurés, les modèles créés et si besoin l’application « Messages Mail » pour historiser les envois.
MAIL.NewMessage
MAIL.AddRecipient
MAIL.SetReplyAddress
MAIL.Setfrom
MAIL.SetObject
MAIL.SetMessage
MAIL.AddAttachment
MAIL.SendMessage
MAIL.SendNewMessage
2. Configuration des serveurs d’envoi
Cette application permet de déclarer plusieurs serveurs pour les envois de courriels. Ces serveurs sont utilisés pour envoyer des courriels depuis l’ERP SILOG via les fonctions dédiées. Un serveur peut être associé à un utilisateur Silog ERP.
Pour renseigner correctement ces paramètres, il est fortement conseillé de faire appel à un administrateur qui maitrise bien la configuration des serveurs d’envoi.
2.2. L’application
Le mode « Liste » présente la liste des serveurs d’envoi enregistrés.
Un serveur d’envoi de courriels est caractérisé par :
Un code qui permet de l’identifier. Ce code est utilisé par les fonctions d’envoi de courriels et les modèles pour indiquer le serveur de configuration à utiliser.
Le libellé permet de définir le serveur.
Le nom de serveur smtp d’envoi qui peut également être une adresse IP.
Un numéro de port.
Une méthode d’authentification du client SMTP: Standard (SMTP simple par user et mot de passe), Anonyme ou SASL (Exchange).
Le nom de l’identifiant à utiliser.
Le mot de passe.
Le nom de l’émetteur qui sera affiché sur les courriels envoyés (Certains serveurs imposent que cette zone soit renseignée d’une façon particulière).
L’utilisation ou non d’une authentification sécurisée.
Protocoles TLS utilisés : Si plusieurs protocoles sont sélectionnés, on laisse au serveur Smtp le choix de choisir dans la sélection. Si un seul protocole est sélectionné, le choix du protocole est forcé.
Une configuration de serveur d’envoi de courriels peut également être associée à un utilisateur ERP. Ainsi, au cours de la session de cet utilisateur, tous les courriels utiliseront ce serveur. »
2.3. Les traitements
2.3.1. Activer la configuration actuelle par défaut
Cette option permet de définir, le serveur d’envoi sélectionné comme serveur à utiliser pour les courriels pour lesquels aucun serveur n’a été défini.
Cela a pour effet de côcher la zone « Par défaut » : .
2.3.2. Envoyer un courriel de test
Cette action a pour effet d’afficher la fenêtre « Nouveau message » qui permet de saisir les caractéristiques d’envoi du courriel pour vérifier le bon fonctionnement du serveur sélectionné.
Il est possible de « glisser-déposer » une pièce jointe de son emplacement d’origine vers la zone dédiée.
Pour supprimer une pièce jointe, sélectionner la pièce puis sélectionner la touche « Suppr ».
Une fois les paramètres saisis, cliquer sur « Envoyer ».
Si une erreur apparaît, reportez vous à la liste ci-dessous pour connaître la cause.
Voici l’interprétation des différents codes erreurs :
11201 : Aucun message à envoyer
11202 : le nom ou l’adresse du serveur n’est pas renseigné
11203 : le nom de l’identifiant est vide
11204 : le numéro de port est incorrect ou vide
11205 : le nom de l’émetteur est vide
11206 : aucun destinataire n’a été renseigné pour le message
11207 : une exception a été levée pendant l’envoi du message
11208 : erreur de connexion au serveur d’envoi de message
11209 : un fichier à ajouter en pièces jointes n’a pas été trouvé
11210 : le mode de connexion au serveur passé en paramètre est inconnu
11211 : la définition de priorité du message passé en paramètre est inconnue
11212 : l’application d’envoi de message n’a pas été chargée
11213 : le K-Code d’autorisation des fonctions d’envoi de courriels n’a pas été trouvé
S’il n’y a pas d’erreur, la fenêtre se ferme, le message a bien été envoyé
3. Modèles de messages
L’application de définition des modèles de message permet de créer des messages formatés prêt à l’emploi. Ils seront utilisés lors d’évènements dans l’ERP SILOG.
3.1. L’application
L’application de définition des modèles de message permet de créer des messages formatés prêt à l’emploi. Ils seront utilisés lors d’évènements dans l’ERP SILOG.
Un modèle de message est défini par :
Un code unique qui permet de l’identifier et de le retrouver quand celui-ci doit être utilisé pour l’envoi d’un courriel.
Un libellé descriptif de l’utilisation du modèle.
Un choix de serveur de configuration à utiliser pour l’envoi du courriel à partir du modèle :
o Utiliser la configuration de serveur associée à l’utilisateur connecté à l’ERP : A utiliser si le courriel est envoyé en nom propre de l’utilisateur connecté.
o Si l’option « Utiliser une configuration de serveur spécifique » est sélectionnée et si le code de « Configuration du serveur à utiliser » n’est pas alimenté, alors c’est le serveur d’envoi coché par défaut qui est utilisé. Si le code de « Configuration du serveur à utiliser » est alimenté, alors c’est ce serveur d’envoi qui est utilisé par ce modèle.
Enregistrer le message : Il est possible de définir sur le modèle que tous les mails envoyés à partir de ce dernier seront enregistrés dans l’application « Messages Mail ».
Les destinataires du courriel sont paramétrables sur le modèle pour des destinataires en copie systématiques du mail envoyé à un client ou partenaire.
L’adresse de réponse est paramétrable.
Le corps du message peut être saisi dans un champ mémo mais il ne permet pas dans ce cas de formater le message et le texte sera brut. L’utilisation d’un fichier permet de définir un modèle de message au format HTML avec des images intégrées comme le logo de l’entreprise. Un onglet permet de voir le contenu du fichier modèle en HTML.
· La zone « Informations » permet de donner des indications à l’utilisateur lorsque ce modèle est utilisé pour envoyer un message avec prévisualisation avant son envoi. Cette information est affichée dans la boite de dialogue de saisie du message.
Exemple :
Une zone permet également de « glisser-déposer » des fichiers en pièces jointes du modèle de message pour indiquer que ces fichiers seront systématiquement envoyés dans les courriels qui utiliseront le modèle.
Pour supprimer une pièce jointe, sélectionner la pièce puis sélectionner la touche « Suppr ».
Les zones qui composent un modèle de message peuvent contenir des tags de formule : A, Cc, Cci, Objet et Message. Les tags seront remplacés par leur valeur correspondante au moment où le message est généré pour être envoyé. 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.
3.2. Exemple de modèle HTML
L’exemple ci-dessous concerne un modèle d’accusé réception d’une commande client.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <meta name="Generator" content="Microsoft Word 15 (filtered)"> <style> <!-- /* Font Definitions */ @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {margin-top:0cm; margin-right:0cm; margin-bottom:8.0pt; margin-left:0cm; line-height:107%; font-size:11.0pt; font-family:"Calibri",sans-serif;} .MsoChpDefault {font-family:"Calibri",sans-serif;} .MsoPapDefault {margin-bottom:8.0pt; line-height:107%;} @page WordSection1 {size:595.3pt 841.9pt; margin:70.85pt 70.85pt 70.85pt 70.85pt;} div.WordSection1 {page:WordSection1;} --> </style> </head> <body lang="FR"> <div class="WordSection1"> <p class="MsoNormal"><b>Bonjour </b><font style="font-weight: bold;" size="-1">[@CLI.Contact]</font></p> <p class="MsoNormal"><b>Merci pour votre commande Numéro : <b>[@COME.NoCommande]</b>, nous l'avons enregistrée sous le numéro d'accusé réception [@COME.NoAccuseReception]. Elle sera traitée dans les plus brefs délais.</b></p> <table style="text-align: left; width: 780px; height: 115px;" border="1" cellpadding="2" cellspacing="2"> <tbody> <tr> <td style="vertical-align: top; width: 369px; font-family: Calibri; font-weight: bold;"><font size="-1"><span style="text-decoration: underline;">Adresse de Livraison </span><br> </font></td> <td style="vertical-align: top; width: 394px; font-family: Calibri; font-weight: bold;"><font size="-1"><span style="text-decoration: underline;">Adresse de Facturation</span><br> </font></td> </tr> <tr> <td style="vertical-align: top; width: 369px; font-family: Calibri;"><font size="-1">[@CLI.NomClient]</font></td> <td style="vertical-align: top; width: 369px; font-family: Calibri;"><font size="-1">[@CLI.NomClient]</font></td> </tr> <tr> <td style="vertical-align: top; width: 369px; font-family: Calibri;"><font size="-1">[@COME.N1erePartieAdresse]</font></td> <td style="vertical-align: top; width: 394px; font-family: Calibri;"><font size="-1">[@CLI.N1erePartieAdresse2]</font></td> </tr> <tr> <td style="vertical-align: top; width: 369px; font-family: Calibri;"><font size="-1">[@COME.N2emePartieAdresse]</font></td> <td style="vertical-align: top; font-family: Calibri;"><font size="-1">[@CLI.N2emePartieAdresse2]</font></td> </tr> <tr> <td style="vertical-align: top; width: 369px; height: 14px; font-family: Calibri;"><font size="-1">[@COME.CodePostal] [@COME.Ville]</font></td> <td style="vertical-align: top; width: 369px; height: 14px; font-family: Calibri;"><font size="-1">[@CLI.CodePostal2] [@CLI.Ville2]</font></td> </tr> <tr> <td style="vertical-align: top; height: 11px; font-family: Calibri;"><font size="-1">[@COME.Pays]</font></td> <td style="vertical-align: top; height: 11px; font-family: Calibri;"><font size="-1">[@CLI.Pays2]</font></td> </tr> </tbody> </table> <b><br> <span style="font-family: Calibri;">Total HT : [@f01116(4)] €</span><br style="font-family: Calibri;"> <span style="font-family: Calibri;">Total TTC : [@f01116(5)] €</span><br> <br> <span style="font-family: Calibri;">[@SILMAILMESSAGE.Message]</span> </b> <p class="MsoNormal"><b> </b></p> <p class="MsoNormal"><b><img id="Image 1" src="ModeleMailHTML_fichiers/image001.gif" height="99" width="211"><span style="font-family: Calibri;">[@g_c_user$]</span></b></p> </div> </body> </html>
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.
4. Messages Mail
Cette application permet de visualiser les courriels envoyés depuis les applications de Silog si ces derniers ont été programmés pour être sauvegardé.
Elle ne permet pas de créer ou modifier un message existant. Elle n’est pas destinée à l’envoi de messages même s’il est possible de le faire dans les traitements de l’application.
4.1. L’application
La zone « Statut d’envoi » permet de savoir si le message a bien été envoyé :
1 => Message envoyé
2 => Message non envoyé
4.2. Les traitements
4.2.1. Nouveau 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.
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 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.
Elles permettent de modifier ou de compléter les paramètres du modèle associé (ajout de destinataires, modification de l'objet...).
La fonction suivante MAIL.SendNewMessage permet d'envoyer un courriel suivant un modèle sans modification des éléments durant son élaboration, la modification reste, toutefois possible manuellement dans la fenêtre « Nouveau message » si son ouverture est activée avant l’envoi.
Des « Tags » sont utilisables dans le corps du message et dans toutes les fonctions d'envoi de courriels :
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 "MAILMESSAGE" et commence la création d’un nouveau message à envoyer.
Ce nouveau message est initialisé avec les informations provenant du code modèle passé en paramètre si celui-ci est renseigné.
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.
Syntaxe :
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 :
f01199$(0) = COME.VarAlphaUtil => Date de début du RDV
f01199$(1) = COME.VarAlphaUtil2 = > Date de Fin du RVD
f01199$(2)= COME.VarAlphaUtil3 => Lieu du RDV
f01199$(3)= COME.VarAlphaUtil4 => Objet du RDV
f01199$(4)= COME.VaralphaUtil5 = > Heure de début du RDV
f01199$(5)= COME.VaralphaUtil6 = > Heure de fin du RDV
f01199$(6)= COME.VaralphaUtil7 = > Description du RDV
i01101$=COME.NoCommande=> Numéro de la commande
f01105$=COME.NoAccuseReception => Numéro d'accusé réception de la commande
f00704$(8)= CLI.Telex2 => adresse de messagerie du contact client
f00702$(2) = CLI.Contacts => Nom du contact
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) :
// 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) :
// 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),"à", "à",1) f01199$(6)=StringReplace(f01199$(6),"â", "â",1) f01199$(6)=StringReplace(f01199$(6),"é", "é",1) f01199$(6)=StringReplace(f01199$(6),"è", "è",1) f01199$(6)=StringReplace(f01199$(6),"ê", "ê",1) f01199$(6)=StringReplace(f01199$(6),"î", "î",1) f01199$(6)=StringReplace(f01199$(6),"ï", "ï",1) f01199$(6)=StringReplace(f01199$(6),"œ", "œ",1) f01199$(6)=StringReplace(f01199$(6),"ù", "ù",1) f01199$(6)=StringReplace(f01199$(6),"û", "û",1) f01199$(6)=StringReplace(f01199$(6),"ç", "ç",1) f01199$(6)=StringReplace(f01199$(6),"ô", "ô",1) f01199$(6)=StringReplace(f01199$(6),"À", "À",1) f01199$(6)=StringReplace(f01199$(6),"Â", "Â",1) f01199$(6)=StringReplace(f01199$(6),"É", "É",1) f01199$(6)=StringReplace(f01199$(6),"È", "È",1) f01199$(6)=StringReplace(f01199$(6),"Ê", "Ê",1) f01199$(6)=StringReplace(f01199$(6),"Î", "Î",1) f01199$(6)=StringReplace(f01199$(6),"Œ", "Ï",1) f01199$(6)=StringReplace(f01199$(6),"œ", "Œ",1) f01199$(6)=StringReplace(f01199$(6),"Ù", "Ù",1) f01199$(6)=StringReplace(f01199$(6),"Û", "Û",1) f01199$(6)=StringReplace(f01199$(6),"Ç", "Ç",1) f01199$(6)=StringReplace(f01199$(6),"Ô", "Ô",1) f01199$(6)=StringReplace(f01199$(6),"€", "€",1) f01199$(6)=StringReplace(f01199$(6),"¥", "¥",1) f01199$(6)=StringReplace(f01199$(6),"©", "©",1) f01199$(6)=StringReplace(f01199$(6),"®", "®",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)