เห็นได้ชัดว่ามันประสบความสำเร็จเมื่อส่งอีเมลพร้อมกล่องจดหมาย 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.4.7.jar: 1.4.7] ที่ javax.mail.service.connect (service.java:317) 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.Emailsendserviceimpl.sendamail.sends ~ [emailSendServiceImpl.class: na] ที่ com.cmsz.processom.controller.workorderController $ sendemail.issendema il (workorderController.java:555) rdercontroller.java:524) [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.4.7.jar: 1.4.7] ที่ javax.mail.service.connect (service.java:317) 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.Empl.Empl.Empl.SendSendS ~ [emailsendserviceimpl.class: na] ที่ com.cmsz.processom.controller.workorderController $ sendemail.issendemail (workorderController.java:555) com.cmsz.processom.controller.workorderController $ sendemail.run (workorderController.java:524) [workorderController $ sendemail.class: na] ที่ java.lang.thread.run (Thread.java:745)
ฉันค้นหาข้อมูลจำนวนมาก แต่ก็ยังไม่สามารถแก้ปัญหาได้ ฉันไม่เข้าใจว่าทำไมฉันไม่สามารถเชื่อมต่อกับโปรแกรมได้แม้ว่าฉันจะทำไม่ได้ก็ตาม หลังจากการต่อสู้เป็นเวลานานหัวหน้าทีมก็แก้ปัญหาในที่สุดและในที่สุดฉันก็เข้าใจเหตุผล ปรากฎว่ารหัสต่อไปนี้เกิดขึ้น:
// SSL การเข้ารหัส mailsSlSocketFactory sf = null; ลอง {sf = new mailsslsocketFactory (); // ตั้งความน่าเชื่อถือโฮสต์ทั้งหมด sf.setTrustAllHosts (จริง); proers.put ("mail.smtp.ssl.enable", "true"); proers.put ("mail.smtp.ssl.socketfactory", sf); } catch (GeneralsecurityException e) {e.printStackTrace (); -หลังจากใช้รหัสนี้การเชื่อมต่อคือพอร์ต 465 ไม่ใช่ 25 แต่อันที่จริงที่อยู่อีเมลที่ให้ฉันไม่ได้เปิดพอร์ต 465 ดังนั้นจึงเป็นไปไม่ได้ที่จะเชื่อมต่อกับพอร์ต 465 หรือพอร์ต 25 ดังนั้นหลังจากลบรหัสนี้โครงการเริ่มต้นจะส่งอีเมลอีกครั้งและประสบความสำเร็จ
ข้างต้นเป็นคำอธิบายเต็มรูปแบบของข้อผิดพลาดที่พบเมื่อ Java ใช้ฟังก์ชั่นอีเมลที่ฉันได้แนะนำให้รู้จักกับคุณ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!