Rajouter des destinataires non users dans alerte (email)

Tags: #<Tag:0x00007f80fa78f230>

Comment je pourrais rajouter des destinataires non users dans une alerte (email)?
par exemple rajouter la personne connectée.
Merci.

Via le hook preAlert, vous avez accès à toutes les informations de l’alerte avant envoi, pour modifier

  • son sujet
  • son contenu : ajouter un tableau spécifique… par langue
  • ses destinataires : en retirer / ajouter suivants des règles spécifiques.

par défaut elle contient ce qui est paramétré au niveau de sa définition.

public void preAlert(Alert alert) {
  if (alert!=null) { // enabled
    alert.setSubject("ENU", "Dear [bill_last_name]");
    alert.setContent("ENU", "Your bill of [bill_amount] ...");
    alert.addRecipient("john@domain.com", Alert.RECIP_TO);     // To someone
    alert.addRecipient(getGrant().getEmail(), Alert.RECIP_CC); // Copy to myself
  }
}

Merci cela fonctionne…
par la même occasion comment pourrais-je envoyer le mail à des membres d’un groupe.?

Il suffit de déclarer tout(s) le(s) groupe(s) de diffusion possible dans l’alerte.
Les hooks reçoivent ensuite les groupes ou emails des membres du groupe.

Pour modifier tout ou partie de l’alerte avant envoi, ou faire quelque chose une fois envoyée :

	public String preAlert(Alert a)
	public String postAlert(Alert a)

Pour filtrer et ne pas envoyer l’alerte à un email donné ou un groupe au moment de l’envoi :

	public boolean spamEmail(String alert, String group, String email)
	public boolean spamGroup(String alert, String group)

Changer le type de destinataire TO/CC/BCC avant l’envoi :

	public char getEmailRecipientType(String alert, String email, char type)
	public char getGroupEmailRecipientType(String alert, String group, char type)

Bonjour, je m’inscris dans cette conversation (très utile) avec un besoin additionnel:

Nous souhaiterions pouvoir exclure explicitement certains utilisateurs des notifications (à la maille User/Alerte). Cette exclusion serait à la main de chaque utilisateur qui demanderait à être désabonné du flux d’une alerte en particulier pour ne plus être notifié (via un lien incorporé dans le mail reçu).

L’étude en cours nous oriente sur une table de relation User/Alerte avec le flag abonné sur la relation et des règles de filtres lors de l’ajout (actuellement explicite dans notre mise en œuvre) des destinataires. Est-ce envisageable ? Dans le cas contraire, comment cela fonctionne-t-il avec les notifications de groupe pour ne pas inclure les destinataires membre du groupe mais qui se sont désabonnés ?

Oui vous pouvez gérer les habilitations dans vos propres tables.
En général, on peut aussi ajouter un flag “no spam” global sur un héritier de l’objet User.

Ensuite, il faut nécessairement ajouter un hook dans chaque objet qui déclenche une alerte éligible à cette règle de filtrage :

  • Soit pour les ajouter spécifiquement via preAlert(Alert a) : par défaut l’alerte ne contient personne, et il faut ajouter les destinataires en fonction de vos habilitations
  • Ou soit pour les retirer s’ils sont dans des Groupes de mailing-lists paramétrées :
    spamEmail(String alert, String group, String email)
    doit retourner false si l’email ne veut pas recevoir cette alerte (dans un groupe donné ou pas…).

Une simple requête SQL vous permet de faire la jointure entre m_user, bpm_alert et vos tables spécifiques de gestion des préférences.

Le hook peut être factorisé par héritage Java pour ne pas dupliquer le code.

Merci beaucoup pour ce complément