Feature #6230
fermé
Mise en place d'un système centralisé d'envoi de mail
Ajouté par Yohann Chastagnier il y a presque 10 ans.
Mis à jour il y a presque 10 ans.
Description
Différentes fonctionnalités dans Silverpeas requièrent l'envoi d'un ou plusieurs mails.
Chacune de ces fonctionnalités gère à sa manière l'envoi d'un mail, et, selon la configuration du serveur SMTP, selon le fait que plusieurs traitements distincts exécutés simultanément peuvent nécessiter l'envoi de mails, des erreurs peuvent survenir à ce niveau.
Aussi, parmi ces fonctionnalités, certaines envoient leurs mails de manière synchrone, ce qui oblige l'utilisateur à attendre que la totalité des mails soit envoyée avant de pouvoir continuer sa navigation sur le serveur.
Le mécanisme à mettre en place doit :
- proposer une manière simple de paramétrer un mail à envoyer
- permettre d'envoyer de manière asynchrone un mail sans effort particulier de développement, mais pour certains cas techniques, doit aussi permettre l'envoi synchrone
- abstraire aux développeurs la partie technique de l'envoi d'un mail
- assurer que les mails à envoyer sont traités les uns après les autres
- Tracker changé de Bug à Feature
- Statut changé de In progress... à Resolved
- % réalisé changé de 0 à 100
Le nouveau mécanisme est mis en place et chacun des traitements qui envoie des mails l'utilise.
Cela concerne les fonctionnalités suivantes :
- notifications par mail
- envoi des newletters
- envoi de mails autour de la perte de son mot de passe
- notification aux abonnés externes d'une liste de diffusion (application mailing-list)
Au niveau technique, l'envoi passe par l'API MailSending. Ci-dessous deux exemples :
// Cas standard de l'envoi d'un mail
MailSending
.from(eMail("[l'email de l'envoyeur]").withName("[le nom de l'envoyeur, optionnel]"))
.to(eMail("[l'email du receveur]"))
.withSubject("[le sujet via une chaîne de caractères]")
.withContent("[le contenu via une chaîne de caractères, via une instance Multipart (javax.mail) ou via une instance MailContent qui fait partie de la nouvelle API]")
.send();
// Possibilité d'indiquer plusieurs receveurs pour un envoi de mail via la classe ReceiverMailAddressSet
ReceiverMailAddressSet receivers =
ReceiverMailAddressSet.ofRecipientType([TO, CC ou BCC])
.withReceiversBatchSizeOf("[nombre de receveurs pour un envoi d'un mail]");
for (String email : emailsToNotify) {
receivers.add(eMail(email));
}
MailSending
...
.to(receivers)
...
.send();
Même si le sujet n'est pas le même, à l'occasion de ce développement a été corrigée une anomalie au niveau de l'envoi d'une notification manuelle depuis une actualité. En effet, l'auteur de l'actualité était la personne indiquée comme notifieur au lieu de l'utilisateur connecté qui effectue la notification manuelle.
PRs:
- Sujet changé de Mise en place d'un système centralisé d'envoi de mail. à Mise en place d'un système centralisé d'envoi de mail
- Version cible mis à Version 5.15
Validé et intégré sur 5.15.x.
Yohann, je te laisse donc faire le report sur la v6...
- Statut changé de Resolved à Closed
Le report a été effectué.
Formats disponibles : Atom
PDF