0

6 La navigation dans le manuel de Kentika est réservée aux utilisateurs identifiés



Envoi d'un email par programmation : SMTP_email

Programmer une option d'envoi d'un email

Préambule

Les envois de email sont presque tous générés par une méthode unique. Seuls certains emails calculés n'utilisent pas cette méthode (exemple : les emails de relance ou de DSI). Il est possible de programmer autant de fonctions d'envoi que nécessaire. Cette méthode peut également être appelée dans le cadre d'un développement web (exemple : un formulaire d'envoi de message rapide à partir d'une liste de personnes).

Grâce à l'utilisation de maquettes, les possibilités de mise en page offertes par cette méthode sont très puissantes. Les liens avec la base de données permettent des traitements contextuels sophistiqués.

Les messages sont stockés systématiquement dans la table des messages. Il sera nécessaire de prévoir d'éliminer des messages envoyés si l'activité est importante afin d'éviter un engorgement inutile de la base de données.

Syntaxe

Cette méthode accepte un paramètre constitué de différents éléments séparés par des ;

Le corps du message est séparé des paramètres par un retour à la ligne (ou caractere(13)). Si un paramètre template est spécifié, le corps du message doit être appelé dans la maquette.

SMTP_email (paramètres)

Exemple

Tx:="de:documentation@masociete.com"

Tx:=Tx+";a:Diff=marketing"

Tx:=Tx+";PJ:C:\RapportConcurrence.pdf"

Tx:=Tx+";Objet:Rapport sur la concurrence"

Tx:=Tx+";Mode:B"+Caractere (13)

Tx:=Tx+"Vous trouverez en pièce jointe le rapport évoqué en réunion"

SMTP_email (Tx)

enverra un email à toutes les personnes inscrites sur la liste de diffusion "marketing" avec comme objet "Rapport sur la concurrence", en joignant le fichier "C:\RapportConcurrence.pdf" et dans le corps du message : "Vous trouverez en pièce jointe le rapport évoqué en réunion". Ce message sera ensuite envoyé par le process d'envoi de message en tâche de fond en tenant compte de l'heure d'envoi précisé en paramétrage.

NB : les paramètres peuvent être exprimés en français ou en anglais (voir ci dessous les syntaxes possibles).

Paramètre : de ou from

Valeur Description

Ident Email de l'utilisateur connecté

identifiant valide Recherche si un utilisateur a l'identifiant précisé.

Si oui, prend son adresse email

adresse email Adresse à utiliser comme expéditeur

database Email par défaut spécifié en paramétrage / messagerie

Tient compte du site éventuellement de l'utilisateur connecté

S:$1 Idem ci-dessus pour le site précisé (ici : $1)

Si ce paramètre n'est pas précisé, c'est le email de l'utilisateur connecté qui sera utilisé.

Exemples

Tx:="de:Ident"

Tx:="de:DOC" (utilisateur ayant DOC comme identifiant)

Tx:="de:documentation@masociete.com"

Tx:="de:database"

Tx:="de:S:$1"

Paramètre : Reply ou ReplyTo

Adresse email pour la réponse, si doit être différente de l'adresse de l'expéditeur.

Paramètre : a ou to

NB : plusieurs paramètres "a" peuvent être précisés. Le message sera adressé à tous les destinataires indiqués.

Valeur Description

Record= Email de la fiche précisée dans le numéro d'enregistrement

Diff= Code ou intitulé d'une liste de diffusion (rubrique 94)

Toutes les personnes rattachées à la liste

Select Les destinataires correspondant à la sélection courante affichée

List Les destinataires correspondant à la liste courante affichée

Select/List La sélection courante si des enregistrements sont sélectionnés

La liste courante sinon

adresse email Adresse du destinataire

Peut être exprimée sous la forme : Nom <adresse>

NB : les tables "personne" , "référence" ; "revue" ; "fournisseur" ont une rubrique adresse email par défaut. C'est cette rubrique qui est utilisée prioritairement. Si cette information n'est pas renseignée (ou si la demande s'applique à la table auteur ou encore document), l'application cherche s'il existe une rubrique de type email qui serait renseignée.

Si la sélection comporte des enregistrements de la table "emprunt" ou "ligne commande", l'application cherchera l'adresse email de la personne. Si la sélection comporte des enregistrements de la table "commande", l'aplication cherchera l'adresse email du fournisseur.

Si une adresse email n'est pas trouvée, l'information est simplement ignorée (aucun message d'erreur n'est généré).

Si aucune adresse email n'est indiquée, on veillera à mettre le paramètre "Mode:A" afin de permettre à l'utilisateur d'indiquer quels sont les destinataires.

Exemples

Tx:="a:Record=12301" (utilisateur ayant 12301 comme Record_Num)

Tx:="a:Diff=MARKETING;a:Diff=COMMERCIAL"

Tx:="a:Select/List"

Tx:="a:Monsieur Albert <moncorrespondant@masociete.com>"

Paramètre : BCc ou CCi

Adresse email des personnes à mettre en copie cachée (blind copy).

Utilise la même syntaxe que le paramètre "a" décrit ci-dessus.

Paramètre : Cc

Adresse email des personnes à mettre en copie (copie conforme).

Utilise la même syntaxe que le paramètre "a" décrit ci-dessus.

Paramètre : Records

Valeur Description

nnn Numéro d'enregistrement

Select Les enregistrements correspondant à la sélection courante affichée

List Les enregistrements correspondant à la liste courante affichée

Exemples

Tx:="Records:45603;Records=45703" (enregistrements dont les numéro sont 45603 et 45703)

Tx:="Records:Select" (les enregistrement sélectionnés dans la liste affichée)

Ces enregistrements sont ceux qui figureront dans le corps du message dans le cas où une maquette serait utilisée et que celle-ci contiendrait une boucle sur les enregistrements sélectionnés. Il sera alors possible de boucler sur une table (exemple : !4d=begin;3!) ou sur le tableau contenant ces enregistrements (exemple : !4d=begin;LTNumRecList!)

Paramètre : Template

Ce paramètre doit correspondre soit à une ressource web existante et dont le nom commence par "email_....", soit au code d'une maquette traitement de texte.

NB : dans le cas d'une maquette traitement de texte, cette dernière faisant par défaut l'objet d'une conversion en html (sauf si le paramètre Format:text est présent), il y a des risques de perte au niveau de la présentation. On préfèrera donc une ressource "email_ ..." pour une présentation précise et soignée. Cette dernière peut être utilisée pour générer un corps de message soit en texte soit en html. Pour un message en html, il faut que l'étiquette "<html>" soit présente en début du corps du message, donc dans la ressource.

Paramètre : Format:text ou Encoding:text

Dans le cas d'un email utilisant une maquette traitement de texte, permet d'indiquer que le corps doit être en texte seul et non converti en html.

Paramètre : Objet ou Subject

Objet du message. Si ce paramètre est non précisé, le message sera envoyé sans objet. Il n'y a pas d'interdiction technique à ce sujet mais ceci n'est pas conseillé, pour des raisons évidentes de lisibilité des messages reçus.

Paramètre : Signature:on ou Sig:on

Si ce paramètre est présent, la signature de l'expéditeur est ajoutée au corps du message (la partie située après le retour à la ligne).

Paramètre : PJ

Valeur Description

Path d'un fichier Fichier sur disque

GED ou GEIDE ou EDM Les archives attachées aux enregistrements sélectionnés (records)

Template=Code,TypeSortie,FileName

Permet de faire exécuter une maquette sur la sélection d'enregistrements et de l'envoyer en pièce jointe

Paramètre : GEIDE ou GED ou EDM

Permet de préciser si le fichier qui doit être joint doit être l'image en basse résolution (screen ou écran) ou l'imagette (preview ou imagette) à la place du fichier archivé.

Exemples

Tx:="PJ:GED;GED:ecran"

enverra en pièce jointe les résolutions écran

Paramètre : Mode

Valeur Description

A Prépare le message et présente la fenêtre avant envoi

Si l'utilisateur annule, le message n'est pas enregistré

Si l'utilisateur valide, le message sera envoyé en tâche de fond

B Prépare le message et l'enregistre. Il sera envoyé en tâche de fond

C Prépare et envoie immédiatement le message

Pièce jointe ou lien ?

A lecture de l'exemple 2 décrit ci-après, on constate que la liste contient un lien sur la fiche document afin d'y accéder via un navigateur. Ainsi, si des archives sont attachées à ce document, l'internaute pourra les télécharger.

Avantage de la solution lien

Les autorisations sont appliquées lorsque l'internaute active le lien. Ainsi, il n'est pas possible pour ce dernier d'avoir accès à une archive s'il n'a pas accès à l'enregistrement auquel elle est attachée.

Si l'internaute transfert son message à un autre utilisateur, ce dernier ne pourra exploiter le message que s'il a également des droits déclarés dans votre application.

Avantage de la solution pièce jointe

Ne nécessite pas de disposer dun serveur web.

L'utilisateur n'a pas besoin d'avoir une connexion active pour exploiter le contenu de son message.

Exemple1 : envoyer un message de confirmation d'inscription

A partir de la liste de personnes, vous voulez pouvoir sélectionner plusieurs personnes et leur adresser un message de bienvenue, tout en conservant la possibilité de modifier le texte standard préparé juste avant l'envoi.

Ressource email

Première étape : créer une ressource email permettant une présentation soignée, donc en html.

Contenu de la ressource email_mail2person (le nom n'est pas imposé, seule la racine email_ l'est)

<html>

<link rel="stylesheet" href="http://!4D=insert;u_adrIPabs("*");3!style.css" type="text/css">

<table border=0 cellspacing=2 cellpadding=2 width='100%'>

<tr><td align='center' valign='middle' height='176'><a href='http://!4D=insert;u_adrIPabs("*");3!Main.htm' class='titlerub'>

<img src="http://!4D=insert;u_adrIPabs("*");3!Ressource.jpg?resnum=200033" height="100" width="104" border="0"></a></td><td>

<font class="textblack10">

!4D=field;$3111/(MAIL)Mail Texte;encode=H!

</td></tr></table>

</html>

On remarque ici que le message contient des liens vers le site WEB associé à l'application qui envoie le message.

Exemple : http://!4D=insert;u_adrIPabs("*");3!Main.htm

u_adrIPabs("*") : permet d'insérer l'adresse du serveur web.

Le contenu du texte du message est chargé dans la variable THeader et est inclu dans la maquette à l'aide de :

!4D=insert;THeader!

Les images ne sont pas jointes au message, seul un lien est inclu :

<img src="http://!4D=insert;u_adrIPabs("*");3!Ressource.jpg?resnum=200033" ... >

Si votre application contient un nombre significatif de messages et que ces derniers doivent avoir toujours la même présentation, il est conseillé d'utiliser la mécanique des blocs (AWEB_...) et d'y faire figurer tout ce qui est commun à tous les messages.

Le fait de faire appel au contenu du texte du message fait que cette ressource pourra être utilisée pour toute une série de messages pré-définis.

Script d'envoi de message

Deuxième étape, créer un script permettant d'envoyer le message décrit ci-dessus à des personnes sélectionnées dans l'explorateur de données.

Contenu du script

Tx:="de:Ident;a:select;mode:a;template:email_mail2person"

Tx:=Tx+";objet:Confirmation d'inscription"

Tx:=Tx+Caractere(13)+"Votre demande d'inscription a été prise en compte."

Tx:=Tx+Caractere(13)+"Vous pouvez maintenant vous connecter avec vos informations personnelles."

SMTP_email (Tx)

On remarque ici que l'expéditeur sera la personne connectée, le mode sera avec présentation de l'écran de confirmation, le message utilisera la ressource décrite ci-dessus, l'objet sera "Confirmation d'inscription" et le texte du message sera les deux lignes "Votre demande d'inscription a été prise en compte." suivi de "Vous pouvez maintenant vous connecter avec vos informations personnelles."

Exécution

Après sélection d'une (ou plusieurs) personnes, l'écran suivant est affiché pour modification et confirmation.

​Et le message apparaît ainsi dans l'outil de réception de message.

Exemple 2 : envoyer une sélection de documents à un destinataire

A partir de la liste de documents, vous voulez pouvoir sélectionner plusieurs documents et leur adresser sous forme d'une liste avec des liens sur les enregistrements à un ou plusieurs utilisateurs.

Ressource email

Première étape : créer une ressource email permettant de générer la liste des documents.

Contenu de la ressource email_Liste de documents

<html>

<link rel="stylesheet" href="!4D=insert;u_adrIPabs("*");3!style.css" type="text/css">

<table border=0 cellspacing=2 cellpadding=2 width='100%' bgcolor="#DDDDD2">

<tr><td align='center' valign='middle'>

<a href='http://!4D=insert;u_adrIPabs("*");3!Main.htm' class='titlerub'>

<img src="!4D=insert;u_adrIPabs("*");3!Ressource.jpg?resnum=1052" height="48" width="48" border="0">

</a></td><td>

<font class="titleblack12">!4D=insert;THeader !<br>

</td></tr></table>

<table border=0 cellspacing=2 cellpadding=2 width='100%'>

!4D=begin;99!

<tr><td width="10%">

<a href="!4D=insert;u_adrIPabs("*");3!Record.htm?record=!4D=insert;html_code(Chaine(Record_num));3!" class="titleblack10">

!4D=insert;u_Geide(1);3!</a></td><td width="90%">

<a href="!4D=insert;u_adrIPabs("*");3!Record.htm?record=!4D=insert;html_code(Chaine(Record_num));3!" class="titleblack10">

!4D=field;$0317/(Documents)Type;encode=H! :

<font class="titleblack12">

!4D=field;=21/(Documents)Titre;encode=H!</a><br><br>

<font class="textblack10">

!4D=field;=131/(Documents)Commentaire;max=300;encode=H!

</td></tr>

!4D=end;99!

</table>

<font class="titlerubgris">

!4D=insert;TFoot !

</html>

Script d'envoi du message

Ce script, affecté à l'option "explorateur-email" pour la table document.

Tx:="Records:select/list;"

Tx:=Tx+"Objet:Votre sélection;"

Tx:=Tx+"Template:email_Liste de documents;"

Tx:=Tx+"Signature:on;"

Tx:=Tx+"Mode:A"+Caractere(13)

Tx:=Tx+"Tel que demandé lors de votre dernier appel"

SMTP_eMail (Tx)

Lors du calcul du contenu du message, le texte indiqué comme corps du message (ici : "Tel que demandé lors de votre dernier appel") est chargé dans la variable THeader ; la signature est chargée dans la variable TFoot .

Résultat

Les images et les titres dans le message sont cliquables et permettent d'ouvrir la notice dans un navigateur.