ฉันมีโปรแกรม Java ที่ใช้ javax.mail เพื่อส่งข้อความ SMTP โปรแกรมนี้ทำงานได้ดีบนกล่อง Linux ฉันอยากจะเน้นย้ำไว้ล่วงหน้า เมื่อฉันลองใช้รหัสเดียวกันนี้ในกล่อง Windows 7 x64 ของฉัน ฉันได้รับข้อผิดพลาดนี้:
send failed, exception: javax.mail.MessagingException: Could not connect to SMTP host: smtp.west.cox.net, port: 25;
nested exception is: java.net.SocketException: Network is unreachable: connect
นี่คือรหัส:
Session session = Session.getInstance(props, null);
MimeMessage msg = new MimeMessage(session);
msg.setFrom();
msg.setRecipients(Message.RecipientType.TO, props.getProperty("mail.to", "[email protected]"));
msg.setSubject(mySubject);
msg.setSentDate(new Date());
msg.setContent(sBuf.toString(), "text/html");
Transport.send(msg);
โปรแกรมนี้ใช้ค่าเริ่มต้นสำหรับทุกสิ่ง มันทำงานได้ดีในกล่องอื่นในเครือข่ายเดียวกัน มันใช้การตั้งค่าเดียวกันกับที่ฉันใช้กับโปรแกรมรับส่งเมลปกติซึ่งทำงานได้ดี มีบางอย่างในกล่อง Windows นี้ที่บล็อก SMTP แต่สำหรับ Java เท่านั้น
ฉันติดตั้ง Symantec (Norton) 360 แล้ว การปิดเครื่องไม่ได้สร้างความแตกต่าง แต่การรีบูตเครื่องใน Safe Mode (ซึ่งปิดใช้งานเกือบทุกอย่าง) ทำให้โปรแกรมทำงานและส่งจดหมายได้ดี
ดังนั้นขอสรุป:
- รหัสโปรแกรมทำงาน
- การตั้งค่าถูกต้อง
- SMTP ใช้งานได้กับ Windows Mail และถูกบล็อกสำหรับ Java บนเครื่อง Windows นี้เท่านั้น
ก่อนที่ฉันจะใช้เวลาอีกหนึ่งวันในการรื้อสิ่งต่าง ๆ และถอนการติดตั้ง / ติดตั้งใหม่ ฉันสงสัยว่ามีใครมีคำแนะนำในการแก้ไขปัญหานี้บ้างไหม
telnet smtp.west.cox.net 25
จากพรอมต์คำสั่ง - person Diego Basch   schedule 28.12.2012