كان من الواضح أنه كان ناجحًا عند إرسال رسائل بريد إلكتروني باستخدام 163 بريدًا من قبل ، ولكن عند استخدام صندوق البريد الخاص بـ China Mobile ، لم يكن ناجحًا في إرسالها في خادم Linux على أي حال. تم الإبلاغ عن الخطأ التالي في البداية:
javax.mail.messagingexception: غير معروف smtp المضيف: mail.chinamobilesz.com على com.sun.mail.smtp.smtptransport.openserver (smtptransport.java:1959) ~ [mail-1.4.7.jar: 1.4.7] في com.sun.mail.smtp.smtptransport.protocolconnect (smtptransport.java:65 4) ~ [mail-1.7.jar: 1.4.7] في javax.mail.service.connect (service.java:317) ~ [mail-1.7.jar: 1.4.7] at javax.mail.service.connect (service.java:176) ~ [mail-1.4.7.jar: 1.4.7] في javax.mail.service.connect (service.java:125) ~ [mail-1.4.7.jar: 1.4.7] في javax.mail.transport. ~ [mail-1.4.7.jar: 1.4.7] في javax.mail.transport.send (transport.java:124) ~ [mail-1.4.7.jar: 1.4.7] في com.cmsz.processom.impl.emlsendserviceMpl.sendemail في com.cmsz.processom.controller.workorderController $ sendemail.issendema il (WorkOrderController.java:555) [WorkOrderController $ sendemail.class: NA] في java.lang.thread.run (thread.java:745) [NA: 1.7.0.11] ......
Telnet Mail.Chinamobilesz.com 25 لا يعمل في Linux ، ولكن يمكنك فقط تغيير mail.chinamobilesz.com إلى IP. بعد البحث عن المعلومات عبر الإنترنت والإشارة إلى مقالات أخرى ، وإعداد تعيين اسم المضيف و IP ، يتصل Telnet أخيرًا بنجاح:
ومع ذلك ، على الرغم من أن Telnet متصل بنجاح ، إلا أنه لا يزال أبلغ عن خطأ عند إرسال البريد الإلكتروني بعد بدء المشروع ، لكنه كان مجرد تغيير:
javax.mail.messagingexception: لا يمكن الاتصال بمضيف smtp: mail.chinamobilesz.com ، المنفذ: 25 في com.sun.mail.smtp.smtptransport.openserver (smtptransport.java:1961) com.sun.mail.smtp.smtptransport.protocolconnect (smtptransport.java:654) ~ [mail-1.7.jar: 1.4.7] في javax.mail.service.connect (service.java:317) ~ [mail-1.7.jar: 1.4.7] javax.mail.service.connect (service.java:176) ~ [mail-1.4.7.jar: 1.4.7] في javax.mail.service.connect (service.java:125) ~ [mail-1.4.7.jar: 1.4.7] في javax.mail.transport. ~ [mail-1.4.7.jar: 1.4.7] في javax.mail.transport.send (transport.java:124) ~ [mail-1.4.7.jar: 1.4.7] في com.cmsz.processom.service.impl.emailsendserviceMpl.sendemail في com.cmsz.processom.controller.workorderController $ sendemail.issendemail (WorkOrderController.java:555) [WorkOrderController $ sendemail.class: NA] في java.lang.thread.run (thread.java:745) [NA: 1.7.0.11] ......
لقد بحثت عن الكثير من المعلومات ولكن لا يزال لا يمكنني حل المشكلة. لا أفهم لماذا لا أستطيع الاتصال بالبرنامج حتى لو لم أتمكن من ذلك. بعد فترة طويلة من النضال ، حل قائد الفريق أخيرًا المشكلة ، وفهمت أخيرًا السبب. اتضح أن الكود التالي في المشروع قد حدث:
// ssl تشفير mailsslsocketfactory sf = null ؛ حاول {sf = new mailsslsocketfactory () ؛ // تعيين ثقة جميع المضيفين sf.setTrustAllhosts (صواب) ؛ prosers.put ("mail.smtp.ssl.enable" ، "true") ؛ prosers.put ("mail.smtp.ssl.socketfactory" ، sf) ؛ } catch (GeneralSecurityException e) {E.PrintStackTrace () ؛ }بعد استخدام هذا الرمز ، فإن الاتصال هو المنفذ 465 ، وليس 25 ، ولكن في الواقع لم يفتح عنوان البريد الإلكتروني المقدم لي منفذ 465 ، لذلك من المستحيل الاتصال بالمنفذ 465 أو المنفذ 25. لذلك بعد إزالة هذا الرمز ، سيرسل مشروع بدء التشغيل البريد الإلكتروني مرة أخرى ونجاح.
ما سبق هو الوصف الكامل للمخاطر التي تمت مواجهتها عندما تنفذ Java وظيفة البريد الإلكتروني التي قدمتها إليك. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!