Bouton action qui ouvre un mail

Tags: #<Tag:0x00007f80fa08e8a0>

je souhaite mettre en place un bouton action qui prépare un email (titre et contenu) sans l’envoyer , il l’ouvre pour que l’on puisse rajouter manuellement des destinataires.
Merci.

Bonjour,

Merci de prendre l’habitude de préciser votre version quand vous postez un message.

Il y a 2 méthodes suivant le besoin :

  1. Si vous voulez utiliser une Alerte configurée et donc envoyer l’email depuis le serveur en back :
  • il faut créer une Action de type back avec un(des) attribut(s) de confirmation de type Email (ou un champs texte long avec des emails séparés par des virgules)
  • coder la méthode en back pour instancier l’Alerte + ajouter les destinataires reçus + Envoyer

Exemple

En V4 :

public String myMethod(Map<String,String> params) {
  Alert a = getAlert("MyAlert", Alert.TYPE_INFO);
  if (a!=null) {
    String emails = params.get("myFieldEmails");
    if (Tool.isEmpty(emails))
      return "MY_ERROR_EMPTY_EMAILS";
    for (String email : emails.split(","))
       a.addRecipient(email.trim(), Alert.RECIP_TO);
    a.send(this);
  }
  return null;
}

En V5 : la syntaxe V4 est compatible mais le passage de paramètre se fera directement via les Fields de l’Action, pour permettre de véhiculer autre chose que des Strings (des documents)

public String myMethod(Action action) {
  Alert a = getAlert("MyAlert", Alert.TYPE_INFO);
  if (action!=null && a!=null) {
    Grant g = getGrant();
    String emails = action.getConfirmField(g.getLang(), "myFieldEmails").getValue();
    if (Tool.isEmpty(emails)) 
      return "MY_ERROR_EMPTY_EMAILS";
    for (String email : emails.split(","))
       a.addRecipient(email.trim(), Alert.RECIP_TO);
    a.send(this);
  }
  return null;
}
  1. Si l’email est assez basic (sujet et contenu textuel sans champ de fusion) et doit être envoyé via la messagerie de l’utilisateur (ex gmail, outlook…), il faut créer une Action de type front, avec un simple “mailto:” dans l’URL standard qui appellera l’agent de mailing du navigateur.

<il faut créer une Action de type front, avec un simple “mailto:” dans l’URL standard qui appellera l’agent de mailing du navigateur>.

Je n’arrive pas à écrire cette Action de type front , pouvez vous me donner le code qui le fait.

Dans ce cas il suffit de créer une Action de type “front” et mettez dans l’URL par exemple :

javascript:window.open("mailto:p.dupond@example.com?subject=Sujet%20du%20courrier&cc=pierre@example.org&bcc=jacques@example.net&body=Bonjour")

Vous pouvez essayer de mettre le “mailto” directement sans window.open dans l’URL, mais vous risquez de prendre une erreur de CORS = le browser n’acceptant que les URL en https.

vous pouvez créer un fonction javascript pour plus de clareté ou éviter les problèmes de taille de ce champ si le body est long.

javascript:MyObject.openMailto()

et dans la ressource SCRIPT de votre objet, créer la fonction :

var MyObject = {};
MyObject.openMailto = function() {
  var url = "mailto:..";
  window.open(url);
};

On sort complètement de Simplicité à ce stade.