لقد لخصت توضيح عدة أنواع من رسائل البريد الإلكتروني: 1. معطى علاج في المقالة التالية.
يستخدم صندوق البريد للشركة حاليًا Zimbra. بعد الاختبار ، يمكن إرسال كل 100 رسالة بنجاح حوالي 98 قسمًا.
حالة الاختبار 1: 100 ، إجمالي الوقت هو: 16 دقيقة ؛
حالة الاختبار 2: 100 ، تم الوصول إلى الوقت الإجمالي حوالي 16 دقيقة ؛ أضف آلية الفشل للفشل ، انتظر لإعادة إصدار 10s بعد الفشل ، حتى 3 مرات ؛
حالة الاختبار 3: يتم إصدار كل قسم ، ويبقى 10s ، ويستغرق 32 دقيقة في المجموع ؛
لمشكلة MessagingException ، يمكنك الرجوع إلى:
javax.mail.messagingexception: لا يمكن الاتصال بمضيف SMTP
استجابةً لهذا النوع من المشكلات ، أضفت البريد الإلكتروني لإعادة إدخاله ،
if (sendhtmlmail_ (mail)) {return true ؛} {int i = 0 ؛ InterruptedException e) {logger.error ("خطأ البريد في البريد" ، e) ؛}} إرجاع true ؛} ومع ذلك ، فإن هذه الآلية تسببت في مشكلة جديدة. عن طريق رسائل البريد الإلكتروني وجزء من البريد الإلكتروني.
استجابةً للمشكلات المذكورة أعلاه ، سنقوم بإزالة آلية إعادة الإصلاح وإزالتها فقط لرسائل البريد الإلكتروني غير القانونية (أي ، عنوان البريد غير الموجود على الخادم) ، ثم أرسلها بعد الإزالة. لن يتم إعادة إصدار فشل إرسال البريد الإلكتروني الناتج عن أسباب أخرى (سيتم تقديم تقرير إلى الشركة المصنعة من خلال قسم تشغيل وصيانة خادم البريد).
فيما يلي منطق تحديد ما إذا كان البريد قانونيًا:
1. SMTP في حالتين: يتم إرسال البريد الإلكتروني من العميل إلى الخادم ؛
2. SMTP هو بروتوكول طلب/استجابة. يتضمن الاستجابة رمزًا ثلاثيًا يمثل حالة الإرجاع
3. SMTP في اتفاقية TCP رقم 25 ، طلب مراقبة الفم
4. الاتصال وإرسال عملية
بروتوكول SMTP غير معقد أو معقد ، وهو بسيط إذا كنت تعرف المقبس. ولكن الآن هو ما نستخدمه فقط في المقالة الأولى ، من العميل المنقولة إلى الخادم.
5 خطوات العملية على النحو التالي:
المنفذ 25 متصلاً بالخادم (إذا لم تكن هناك خدمة بريد ، حتى الاتصال الأبيض)
إرسال تحيات Helo إرسال البريد من Command.
إرسال RCPT إلى الأمر.
الرمز المحدد كما يلي:
استيراد java.io. خط السلسلة = فارغ ؛ نص) throws ioexception {wr .write (text + "/r/n") ؛ = New Hashtable () ؛ }) | رمي NamingExcepti (على (على "لا تطابق للاسم" " + hostname +" '") ؛} // huzzah! لدينا ماشين لمحاولة. nt لنكون صحيحًا تمامًا. يتم ترك هذا كأحد الأدوات لأي شخص يهتم. ArrayList Res = New ArtileRist () ؛ ****************************************************** ****************************************************** ****************************************************** ****************************************************** *، (f [1] .ndswith (".") mailHost = f [1] .SubString (0 ، (f [1]. () - 1)) ؛ آخر mailHost = f [1] ؛ // الإصلاح **************** res.Add (MaylHost) ؛} resident res ؛} isaddressvalid (عنوان السلسلة) الثابت indexof ('@') XChangers String Domain = SubString (++ pos) ؛ // العنوان قيمة ، ولكن إذا لم نتمكن من ذلك ، فهذا لا يوجد علامة على أنه لا إذا كان (mxlist.size () == 0) FALSE ؛ الحصول على // قد يكون من الممكن أن يكون هناك * ome // لأخذ الأفضلية في الاعتبار (int mx = 0 ؛ mx <mxlist.size () ؛ mx ++) { ) ؛ rgagnon.com ") ؛ res = Hear (rdr) ؛ if (res! = 250) رمي استثناء جديد (" "لا esmtp") ؛ .com> ") ؛ res = hear (rdr) ؛ if (res! = 250) رمي استثناء جديد (" المرسل ted ") ؛ say (wtr ،" rcpt to: <" + address +"> ">") ؛ RES = RDR) ؛ "العنوان ليس قيمة!" ؛} أخيرًا {if (صالح) return true ؛}} public atic void main (string args []) {String testData [] = {"[email protected]" ، "[email protected]" ، "عنوان الحكومة" [email protected] "// فشل هذه الطريقة} ؛ لـ (int ctr = 0 ؛ ctr <testData.length ؛ ctr ++) {system.out.println (ctr] +" هل vali d؟ " +isaddressvalid ( TestData [ctr]) ؛} return ؛}}ما سبق هو منطق تحديد ما إذا كان عنوان البريد قانونيًا.
static static [] removeInvalidatress (string [] ) || () ؛ NormalAddress = NormalizeadDress (العنوان) ؛ } catch (messagingexception e) !
ما سبق هو كل محتويات هذه المقالة.