7
votes

Une bibliothèque pour des courriels d'envoi fiables de l'application Java - avec tampon, réessayage, etc.

Envoi de courriels d'une application écrite en Java n'est pas un gros problème. Dans de nombreux types de logiciels, il est nécessaire d'avoir ce service fiable (à l'application -> niveau de connexion SMTP Server). Cela implique d'avoir quelque chose comme une table tampon avec des courriels à envoyer et d'un travail cyclique pour réessayer ultérieurement si, par exemple, SMTP Server n'est pas disponible, limite le nombre de messages d'envoi par seconde ou signaler des problèmes permanents à l'administrateur.

J'ai mis en place cette fonctionnalité dans une portée de base dans un projet (n'était pas très compliqué), mais je me demande s'il y a une bibliothèque de Java dédiée qui pourrait être réutilisée à cet effet?

J'ai fait quelque chose de recherche, mais sans résultats ( Vesijama , Spring Mail ou Le courrier de communes Il suffit de préparer un message électronique, mais ne fournit pas de fonctionnalités mentionnées).


0 commentaires

3 Réponses :


4
votes

Toutes les préoccupations que vous décrivez sont gérées par l'agent de transfert de messagerie (c'est-à-dire Sendmail, Postfix, Exchange, etc.) grâce à la bonne "Ole Jours où Internet a été conçu pour survivre à la guerre nucléaire et à 300 modems bauds. Il n'y a pas besoin d'une bibliothèque qui les ajoute, car ils sont déjà là.

Tout le tampon de MTA sera leurs messages dans un fichier de bobine ou une autre boutique de données et automatiquement réessayer tous les échecs récupérables. Ceci est requis par RFC 2821 (section 4.5.4):

... en mail que ne peut pas être transmis immédiatement doit être mis en file d'attente et périodiquement récupéré par l'expéditeur [...]

Les tentatives continuent jusqu'à ce que le message soit transmis ou que l'expéditeur donne en haut; Le temps de renonciation doit généralement être d'au moins 4 à 5 jours. le Les paramètres à l'algorithme de tentative doivent être configurables.

Tout MTA est capable Signaler les problèmes qu'il rencontre, c'est juste une décence courante. Ils écriront généralement dans la facilité Syslog du système d'exploitation hôte, qui peut être surveillée de n'importe quel type de façons.

Je suppose que tous ne peuvent pas tous mettre en œuvre la limitation des taux , mais une recherche Google très rapide suggère que les trois que j'ai mentionnés sont tous capables.


3 commentaires

Juste pour que les noobies ne pensent pas que vous criez: RFC2119 Spécifie la signification de nombreux mots capitalisés importants utilisés dans de nombreux RFC. C'est un Doit lire;)


Mais alors, l'OP a besoin d'un MTA exécuté sur le même serveur que son application Java est correcte? Si le lien vers le MTA est en panne, RFC2821 ne sera pas très utile.


Merci pour votre réponse. Je suis au courant des capacités MTA, mais je m'inquiète de la situation lorsque MTA n'est pas disponible pendant un certain temps et je dois envoyer des centaines d'emails importants avec des pièces jointes déclenchées dans cette période à la main n'ayant que "Impossible d'envoyer des courriels" à partir de Log applications. La fiabilité dont je parle est "à l'application -> niveau de connexion SMTP Server".



0
votes

Jetez un coup d'œil à API de MailDulerduleur OOP Cette bibliothèque stocke les e-mails défaillants de la base de données par la série d'objets. À l'heure prévue, le fil de dos sélectionnera l'e-mail de la table SQL et l'envoyer au serveur SMTP. Si les communications avec le serveur SMTP échouent, le fil au sol continuera d'envoyer l'e-mail jusqu'à la comptabilisation spécifiée.


0 commentaires

2
votes

Je vous recommanderai Asprin .

Aspirin est un serveur SMTP SEND-SEN SEULEMENTABLE pour les développeurs Java.


0 commentaires