cancel
Showing results for 
Search instead for 
Did you mean: 

Mails personnalisés ?? (alfresco 3.2r2 sous ubuntu 9.10)

sergio1024
Champ in-the-making
Champ in-the-making
Bonjour,

Est-il possible d'envoyé en mail pour tout nouveau document ajouté dans un espace ex:

Sujet : Nouveau document dans l'espace "xxx".
Data: un nouveau document "xxxx" a été ajouté par "xxx"…


j'ai créé une règle "tous les éléments" - "envoie mai" - "entrant"

mais j'ai l'impression qu'il envoi un mail pour toutes actions effectuées dans l'espace, de plus le mail
informe simplement qu'un nouvel element est présent sans notions de noms…

merci d'avance.
10 REPLIES 10

bertrandf
Champ on-the-rise
Champ on-the-rise
Vous devez dans un premier temps créer un modèle d'email à placer dans /Company Home/Data Dictionary/Email template/ (encodez le fichier en UTF-8).
Ensuite créer un script qui fera appelle à votre modèle d'email (à placer dans /Company Home/Data Dictionary/Scripts/).
cf. http://wiki.alfresco.com/wiki/3.2_JavaScript_API#Actions_API

Et enfin, créer une règle qui appelle ce script.



Voila à quoi pourrait ressembler votre modèle d'email (notification_user_email.ftl) :
Bonjour,

Un nouveau document '${document.name}' a été ajouté par '${person.properties.firstName}<#if person.properties.lastName?exists> ${person.properties.lastName}</#if>' dans l'espace '${document.parent.name}'.
Vous pouvez consulter ce document à l'adresse suivante : http://localhost:8080/alfresco${document.url}

Cordialement.

Et votre script :
try{
   if(!document.isContainer){
       var persons = search.xpathSearch("/sys:system/sys:people/*") || [];

       for each (person in persons){
           if(person.properties.userName != "admin" && person.properties.userName != "guest"){
               var email = person.properties.email;

               if(email)
                   sendMail(email);
           }
       }
   }
}
catch(exception){
   throw exception;
}


function sendMail(email){
   // create mail action
   var mail = actions.create("mail");
   mail.parameters.to = email;
   mail.parameters.subject = "Nouveau document dans l'espace " + document.parent.name + ".";
   mail.parameters.from = "admin@alfresco.fr";
   mail.parameters.template = companyhome.childByNamePath("Data Dictionary/Email Templates/notification_user_email.ftl");
   mail.parameters.text = "Nouveau document"; //"some text, in case template is not found";

   // execute action against a document
   mail.execute(document);
}

Ensuite, il ne vous reste plus qu'à créer une règle "exécuter un script" sur l'espace que vous voulez.
(A noter que dans cet exemple, un mail est envoyé à tous les utilisateurs sauf l'admin et l'utilisateur guest.)

sergio1024
Champ in-the-making
Champ in-the-making
Merci pour votre réponse.

Cependant l'exection semble ne pas fontionner :

try{
   if(!document.isContainer){
         var group = people.getGroup("GR_VERIFS");
   var persons = people.getMembers(group);

       for each (person in persons){
           if(person.properties.userName != "admin" && person.properties.userName != "guest"){
               var email = person.properties.email;

               if(email)
                   sendMail(email);
           }
       }
   }
}
catch(exception){
   //throw exception;
}


function sendMail(email){
   // create mail action
   var mail = actions.create("mail");
   mail.parameters.to = email;
   mail.parameters.subject = "Nouveau document dans l'espace " + document.parent.name + ".";
   mail.parameters.from = "admin@alfresco.com";
   mail.parameters.template = companyhome.childByNamePath("Data Dictionary/Email Templates/AJOUT DOCS/ajout_verif_notify_user_email.ftl");
   mail.parameters.text = "Nouveau document"; //"some text, in case template is not found";

   // execute action against a document
   mail.execute(document);
}

je ne reçois rien.(je précise que ma config mail est OK au niveau conf)
peut-on exploiter des logs pour l'execution des scripts ?

bertrandf
Champ on-the-rise
Champ on-the-rise
Si vous voulez sélectionner les utilisateurs d'un groupe, utilisez l'API People : http://wiki.alfresco.com/wiki/3.2_JavaScript_API#People_API

Si on reprend l'exemple précédent, il faudrait remplacer :
var persons = search.xpathSearch("/sys:system/sys:people/*") || [];
par

var group = people.getGroup("GROUP_" +"Nom de votre groupe");
var persons = people.getMembers(group);
[Je me répète car les messages disparaissent.]


On ne peut pas utiliser simplement l'action envoi mail ? j'ai vu qu'on pouvait insérer des modèle de mails (peut-être que dans ce cas il n'est pas possible d'exploiter de variables..?)

Si, vous faites comme vous disiez dans votre premier message.
Vous créez une règle de type "envoi de mail", vous sélectionnez les groupes auxquels vous souhaité envoyer le mail.
Et vous ajoutez un email template que vous aurez préalablement ajouté dans /Company Home/Data Dictionary/Email template/

Par contre je ne pense pas que vous puissiez personnaliser le titre de votre mail.

sergio1024
Champ in-the-making
Champ in-the-making
Merci, avec la 2ème version du script cela fonctionne !!

Vous créez une règle de type "envoi de mail", vous sélectionnez les groupes auxquels vous souhaité envoyer le mail.
Et vous ajoutez un email template que vous aurez préalablement ajouté dans /Company Home/Data Dictionary/Email template/

Par contre pour cette procédure je n'ai aucun choix dans "insérer modèle". J'ai pourtant 3 fichiers dans l'espace "Email Templates" ??

bertrandf
Champ on-the-rise
Champ on-the-rise
Par contre pour cette procédure je n'ai aucun choix dans "insérer modèle". J'ai pourtant 3 fichiers dans l'espace "Email Templates" ??

Désolé, il faut que votre template soit dans l'espace : Company Home > Data Dictionary > Email Templates > Notify Email Templates

Cordialement.

sergio1024
Champ in-the-making
Champ in-the-making
merci !!


Par contre le message n'interprète pas les accents.. y a t'il un moyen de "forcer" ?

bertrandf
Champ on-the-rise
Champ on-the-rise
Oui, il faut que votre fichier soit encodé en UTF-8.
Si vous utilisez Notepad ++, allez dans Format >> Convertir en UTF-8, sauvegardez votre fichier et mettez le à jour dans Alfresco.

sergio1024
Champ in-the-making
Champ in-the-making
Oui merci, je venait de trouver la réponse en faisant une recherche sur le forum.


Merci pour votre aide !!!

sergio1024
Champ in-the-making
Champ in-the-making
Bonjour,

Dans l'action "envoyé un mail…", le menu déroulant "sélectionner un modèle" reste vide malgré l'ajout de fichier dans l'espace "DATA DICTIONNARY/EMAIL TEMPLATES".

Ya t'il un paramètre à activer ?

Merci d'avance.