Project

General

Profile

Feature #6230

Mise en place d'un système centralisé d'envoi de mail

Added by Yohann Chastagnier over 4 years ago. Updated over 4 years ago.

Status:
Closed
Priority:
Normal
Category:
Envoi de mail
Start date:
01/24/2015
Due date:
% Done:

100%

Estimated time:

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

History

#1

Updated by Yohann Chastagnier over 4 years ago

  • Tracker changed from Bug to Feature
#2

Updated by Yohann Chastagnier over 4 years ago

  • Status changed from In progress... to Resolved
  • % Done changed from 0 to 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:
#3

Updated by Nicolas Eysseric over 4 years ago

  • Subject changed from Mise en place d'un système centralisé d'envoi de mail. to Mise en place d'un système centralisé d'envoi de mail
  • Target version set to Version 5.15

Validé et intégré sur 5.15.x.
Yohann, je te laisse donc faire le report sur la v6...

#4

Updated by Yohann Chastagnier over 4 years ago

  • Status changed from Resolved to Closed

Le report a été effectué.

Also available in: Atom PDF