J'ai résumé l'explication de plusieurs types d'e-mails: 1. Réseau; 2. Porfugeur; 3. Auto-protection du serveur, comme la suspension ou le spam à partir de grandes quantités, je pense que la troisième explication est fiable. Étant donné le remède dans l'article suivant.
La boîte aux lettres de l'entreprise utilise actuellement Zimbra. Après les tests, tous les 100 courriers peuvent être envoyés avec succès environ 98 sections.
Cas de test 1: 100 scellé, le temps total est d'environ: 16 minutes;
Cas de test 2: 100 scellés, le temps total est d'environ 16 minutes; Ajouter le mécanisme de défaillance de l'échec, attendre que 10S soit émis après l'échec, jusqu'à 3 fois;
Cas de test 3: Chaque section est émise, reste 10s et prend 32 minutes au total;
Pour le problème de MessageingException, vous pouvez vous référer à:
Javax.mail.MessagingException: Impossible de se connecter à l'hôte SMTP
En réponse à ce type de problème, j'ai ajouté l'e-mail pour le-sens,
if (sendhtmlmail_ (mail)) {return true;} else {int i = 0; InterruptedException e) {Logger.Error ("Errreur de courrier en matière de courrier", e);}} return true;} Cependant, ce mécanisme a provoqué un nouveau problème. par e-mail et partie de l'e-mail.
En réponse aux problèmes ci-dessus, nous supprimerons le mécanisme de réédition et le supprimerons uniquement pour les e-mails illégaux (c'est-à-dire l'adresse mail qui n'existe pas sur le serveur), puis l'envoie après le retrait. L'e-mail envoyant une défaillance causée par d'autres raisons ne sera pas émis (le problème rapportera au fabricant via le service de fonctionnement et de maintenance du serveur de messagerie).
Ce qui suit est la logique de déterminer si le courrier est légal:
1. SMTP est dans deux cas: Premièrement, l'e-mail est transmis du client vers le serveur;
2. SMTP est un protocole de demande / réponse. La réponse comprend un code à trois chiffres qui représente l'état de retour
3. SMTP à l'accord TCP n ° 25, la demande de surveillance de la bouche
4. processus de connexion et d'envoi
Le protocole SMTP n'est ni compliqué ni compliqué, et il est simple si vous connaissez la prise. Mais maintenant, ce que nous utilisons dans le premier article, du client transmis au serveur.
5 Les étapes de l'opération sont les suivantes:
Port 25 connecté au serveur (s'il n'y a pas de service de messagerie, même la connexion blanche)
Envoyer des salutations Helo Envoyez le courrier de la commande.
Envoyez la commande RCPT.
Le code spécifique est le suivant:
Importer java.io. *; String line = null; Text) thr ows ioException {wr .write (text + "/ r / n"); = New hashTable (); }) ;; | (Att. Size () == 0)) {attrs = ictx.getatTributes (nom d'hôte, nouvelle chaîne [] {"a"}); Lancer naminingExcepti (ON (sur "No Match For Name '" + Hostname + "'");} // Huzzah! Nous avons des machnes à essayer. ArrayList Res = nouveau ArrayList (); **************************************************** **************************************************** **************************************************** **************************************************** *, (f [1] .ndswith (".") MailHost = f [1] .SubString (0, (f [1]. () - 1)); else MailHost = f [1]; // le correctif ***********. Indexof ('@'); Xchangers String Domain = Address.SubString (++ pos); ArrayList mxlist = null; // L'adresse est la valeur, mais si nous ne le pouvons pas, c'est un signe que ce n'est pas si (mxlist.size () == 0) renvoie false; obtenir // une comptabilité positive. OME // pour prendre en compte la préférence. )); Rgagnon.com "); res = entendre (rdr); if (res! = 250) New Exception (" "Not Esmtp"); .com> "); res = entendre (RDR); if (res! = 250) Throwing New Exception (" Sender Ted "); Say (wtr," rcpt to: <"+ adresse +"> ">"); res = entendre (rdr); "L'adresse n'est pas une valeur!"); ;} Enfin {if (valide) return true;}} public atic void main (String args []) {String testData [] = {"[email protected]", "[email protected]", "adresse du gouvernement" [email protected] "// défaillance de cette méthode}; pour (int ctr = 0; ctr <testData.length; ctr ++) {System.out.println (ctr] +" est vali d? "+ IsaddressValid ( testData [ctr]);} return;}}Ce qui précède est la logique de déterminer si l'adresse du courrier est légale.
STATIQUE STATIQUE PRIVÉE [] REPOSTIMEILSE ) || Adresses Null ==) {return new String [0];} String sendcmd = "Mail from:" + normaliseAddress (MailFrom); (); Code = smpttrans.simplecommand (sendcmd); NormalAddress = NormalIzEaddress (Adresse); String Cmd = "RCPT à:" + NormalAddress; } Catch (MessagedException e) {Logger.Error (Valider l'erreur d'adresse du courrier. !Ce qui précède est tout le contenu de cet article.