Projet

Général

Profil

Actions

Feature #6230

fermé

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

Ajouté par Yohann Chastagnier il y a environ 9 ans. Mis à jour il y a environ 9 ans.

Statut:
Closed
Priorité:
Normal
Assigné à:
Catégorie:
Envoi de mail
Début:
24/01/2015
Echéance:
% réalisé:

100%

Temps estimé:
Livraison en TEST:
Livraison en PROD:

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

Mis à jour par Yohann Chastagnier il y a environ 9 ans

  • Tracker changé de Bug à Feature

Mis à jour par Yohann Chastagnier il y a environ 9 ans

  • 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:

Mis à jour par Nicolas Eysseric il y a environ 9 ans

  • 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...

Mis à jour par Yohann Chastagnier il y a environ 9 ans

  • Statut changé de Resolved à Closed

Le report a été effectué.

Actions

Formats disponibles : Atom PDF