createfile et sendemail [résolu]

cancel
Showing results for 
Search instead for 
Did you mean: 
fmarin
Member II

createfile et sendemail [résolu]

bonsoir

j'ai besoin de créer un document dans le repository et de l'envoyer par email

La création du document ne me pose pas de problème.

Pour envoyer l'email (html) dans un javascript, par contre … j'aurai besoin d'un peu d'aide et de conseil

merci d'avance

fred
12 Replies
cleseach
Active Member II

Re: createfile et sendemail [résolu]

Bonjour,

En suivant <a href="http://wiki.alfresco.com/wiki/3.0_JavaScript_API#ScriptAction_API">ce lien</a> vous accéderez au wiki Alfresco.
Vous y trouverez un exemple de JavaScript pour envoyer un e-mail.

En substance, l'envoi de mail se fait par l'utilisation d'une action que vous devrez paramétrer avec les informations ad hoc.

Cordialement,
Charles Le Seac'h
fmarin
Member II

Re: createfile et sendemail [résolu]

bonjour

je progresse !

le sujet suivant est l'envoi à une liste de destinataires internes et/ou externes ; j'ai testé différentes approches (selon ce que j'ai pu trouver sur le forum :
- mail.parameters.to = "xx@ttt.fr,yy@ttt.fr";
- mail.parameters.to = "xx@ttt.fr;yy@ttt.fr";

et passé par un array (mais j'ai quand même  un doute pour cette dernière solution)
var tomany  = new Array();
tomany[0]="xx@yy.fr";
tomany[1]="gg@yy.fr";
mail.parameters.to = tomany;


j'ai un autre soucis : le lien avec le modèle et l'exécution de ce dernier

j'ai créé un .ftl minimaliste qui ne s'exécute pas …

<html>


<head>
   </head>
  
   <body bgcolor="#dddddd">
<p> Hello world—————————–</p>   </body>
</html>



par ailleurs, comment se fait le lien avec le document créé ?

en vous remerciant

Frédéric Marin
cleseach
Active Member II

Re: createfile et sendemail [résolu]

Bonjour,

L'envoi à plusieurs destinataires est possible en utilisant le paramètre "to_many".
D'après ce que je constate (cf. classe <i>MailActionExecuter</i>), cette liste de destinataires doit correspondre à des utilisateurs ou des groupes du système.

Concernant le template, il faudrait un peu plus de détails pour comprendre votre problème : comment est-il utilisé dans l'action, où le fichier est-il stocké, etc.

Et pour finir, je ne comprends pas votre question :
<blockquote>comment se fait le lien avec le document créé ?</blockquote>

Cordialement,
Charles Le Seac'h
fmarin
Member II

Re: createfile et sendemail [résolu]

bonsoir Charles

effectivement, cela marche mieux

le code :

var mail = actions.create("mail");

var tomany  = new Array();
tomany[0]="user1";
tomany[1]="user2";
mail.parameters.to_many = tomany;
mail.parameters.subject = "Note d'alerte : " + titre;
mail.parameters.from = "mail@ss.fr";
//mail.parameters.template = doc.childByNamePath("Espace racine/Modèles d'e-mail/alfeo/noteAlerte/notify.noteAlerte.ftl");
mail.parameters.template = doc.childByNamePath("Company Home/Data Dictionary/Email Templates/alfeo/noteAlerte
/notify.noteAlerte.ftl");
mail.parameters.text = doc.getContent() +    "\n —fin—";
mail.execute(doc);


le template est stocké dans     
  Espace racine > Modèles d'e-mail > alfeo > noteAlerte   > notify.noteAlerte.ftl

le code du template (minimaliste …):


<html>
   <head>
   </head>
    <body bgcolor="#dddddd">
      <p> Hello world—————————–</p>
  </body>
</html>


j'ai bien le "content" dans le mail reçu, mais pas le "hello world" …

concernant le <blockquote>comment se fait le lien avec le document créé</blockquote>
la question est plutôt mal posée Smiley Happy

je souhaite récupérer quelques metadonnées du document créé dans l'espace alfresco (et là, je sèche quand même un peu)

Frédéric Marin
cleseach
Active Member II

Re: createfile et sendemail [résolu]

Bonjour,

Il n'est pas possible de composer le corps d'un e-mail à partir d'un template (mail.parameters.template) et d'un texte (mail.parameters.text).
Si le template existe, il est utilisé en priorité. Le texte sera utilisé à défaut (template non spécifié ou non trouvé).

Dans votre cas, vous obtenez le texte et pas le template. C'est donc que le template n'a pu être trouvé… et ce n'est pas étonnant.
Vous utilisez en effet :
<javascript>doc.childByNamePath("Company Home/Data Dictionary/Email Templates/alfeo/noteAlerte/notify.noteAlerte.ftl");</javascript>
qui demande à Alfresco de rechercher un document "notify.noteAlerte.ftl" dans un sous-arborescence du document sur lequel s'applique l'action.
Bref, l'objet utilisé (cf. <em>doc</em>) n'est pas le bon.

Dans le premier lien que je vous donnais, l'appel était le suivant :
<javascript>mail.parameters.template = root.childByNamePath("Company Home/Data Dictionary/Email Templates/notify_user_email.ftl");</javascript>
L'objet racine utilisé est <strong>root</strong>.

Essayez donc ce changement et dites-nous si tout ceci fonctionne.

Cordialement,
Charles Le Seac'h
fmarin
Member II

Re: createfile et sendemail [résolu]

Bonsoir

j'ai compris la bêtise.

je m'en suis sorti avec un

mail.parameters.template = companyhome.childByNamePath("Dictionnaire de données/Modèles d'e-mail/alfeo/noteAlerte/notify.noteAlerte.ftl");


Dans mon process, je crée un document  la volée en le complémentant de méta données. Je souhaite mettre en forme ces données dans le mail que j'envoie.

Dans un web-script "standard", le js passe les données au template (… model.variable=…).
Dans le cas d'un mail, le template semble interprété directement : j'arrive à reprendre des informations du contexte d'exécution (par exemple Hello ${person.properties["cm:firstName"]}), mais rien concernant le document : comment faire ?

Frédéric Marin
cleseach
Active Member II

Re: createfile et sendemail [résolu]

Bonjour,

Dans le template, vous pouvez utiliser l'objet <em>document</em>.
Cette objet est ajouté au model du template par la méthode <em>createEmailTemplateModel</em> de la classe <em>MailActionExecuter</em>. Vous trouverez dans cette méthode les autres objet dont vous disposez par défaut.

Cordialement,
Charles Le Seac'h
fmarin
Member II

Re: createfile et sendemail [résolu]

bonjour Charles

oui, effectivement, simple comme bonjour !

merci pour l'information

je prépare un exemple de code et je le poste

Frédéric Marin
fmarin
Member II

Re: createfile et sendemail [résolu]

Bonsoir

il me reste quand même un petit problème

en fait, après recherche et test, l'objet document est directement attaché au template

Celui ci ne s'exécutait pas car je cherchais la propriété "title" qui n'était pas renseignée


  doc.properties.content.setEncoding("UTF-8");
  doc.content += "\r\n\r\nCopyright (C) xxxx - 2013";
  doc.mimetype = "text/plain";
  doc.properties["cm:title"] = titre;
  doc.properties["cm:description"] =  "note générée depuis un web-script";;
 
  // add aspect dublincore
  doc.addAspect("cm:dublincore");
  doc.properties["cm:author"] = emetteur;
  doc.properties["cm:publisher"] = "xxxx";

  // save doc
  doc.save();
 
  // create mail action
  var mail = actions.create("mail");
  var tomany  = new Array();
  var m = destinataire.split(",");
  for ( var i=0 ; i<m.length ; i++ )
  {
    tomany=m;
  }
  mail.parameters.to_many = tomany;
  mail.parameters.subject = "Note d'alerte : " + titre;
  mail.parameters.from = "xxxx@xxxx.fr";
  var mailTemplate=companyhome.childByNamePath("Dictionnaire de données/Modèles d'e-mail/y/y/notify.noteAlerte.ftl");
  mail.parameters.template = mailTemplate;
  mail.parameters.text = doc.getContent() +
   "\n —fin—";
  mail.execute(doc);

  // setup model for response template
  model.doc = doc;



j'ai en fait deux problèmes résiduels :
- je n'arrive pas à initialiser les propriétés title et description (pour le cas, c'est gênant)
- avec ces tests, j'ai perdu la capacité d'envoi multi-mails (la variable tomany est pourtant bien chargée)

pour l'exemple, une partie du template


       <tr>
     <td width="150">Th&egrave;me :</td>
     <td><input name="theme" size=74 value="${document.properties["cm:coverage"] }"></td>
       </tr>
       <tr><td align="center" colspan=2 style="color:DarkSeaGreen ;background-color :Wheat ; ">Informations Brutes</td></tr>
       <tr>
     <td width="150">Titre :</td>
     <td><input name="titre" size=74 value="${document.properties["cm:subject"] }"></td>
       </tr>
       <tr>
     <td width="150">Texte :</td>
     <td ><textarea name="texte" cols=100 rows=10>${document.properties["cm:content"] }</textarea></td>
       </tr>


j'ai tellement épluché ce code que je n'y vois plus rien ; si vous avez une piste …

merci

Frédéric Marin