Java가 메일 발송 기능을 실행할 때 부딪히는 구덩이

이전에 163메일박스로 메일을 보낼 때 분명히 성공했지만 중국에서 자신의 메일박스를 이동할 때 어쨌든 linux 서버에서 메일을 보내지 못했습니다. 처음에 다음과 같은 오류를 보고했습니다.

javax.mail.MessagingException: Unknown SMTP host: mail.chinamobilesz.com 
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1959) ~ [mail-1.4.7.jar:1.4.7] 
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:65 4) ~[mail-1.4.7.jar:1.4.7] 
at javax.mail.Service.connect(Service.java:317) ~[mail-1.4.7.jar:1.4.7] 
at javax.mail.Service.connect(Service.java:176) ~[mail-1.4.7.jar:1.4.7] 
at javax.mail.Service.connect(Service.java:125) ~[mail-1.4.7.jar:1.4.7] 
at javax.mail.Transport.send0(Transport.java:194) ~[mail-1.4.7.jar:1.4.7 ] 
at javax.mail.Transport.send(Transport.java:124) ~[mail-1.4.7.jar:1.4.7] 
at com.cmsz.processOm.service.impl.EmailSendServiceImpl.sendEmail(EmailS endServiceImpl.java:107) ~[EmailSendServiceImpl.class:na] 
at com.cmsz.processOm.controller.WorkOrderController$SendEmail.isSendEma il(WorkOrderController.java:555) [WorkOrderController$SendEmail.class:na] 
at com.cmsz.processOm.controller.WorkOrderController$SendEmail.run(WorkO rderController.java:524) [WorkOrderController$SendEmail.class:na] 
at java.lang.Thread.run(Thread.java:745) [na:1.7.0.11] 
...... 
linux에서telnetmail.chinamobilesz.com25도 안 통하지만 메일을 바로.chinamobilesz.com을 ip로 바꾸면 됩니다. 인터넷에서 자료를 찾고 다른 글을 참고한 후 호스트 이름과 ip의 맵을 설정한 후 드디어 텔넷이 연결됩니다.
그러나 텔넷이 성공적으로 연결되었음에도 불구하고 프로젝트를 시작한 후에 메일을 보낸 것은 여전히 오류를 보고했고 단지 오류를 바꿨을 뿐이다.

javax.mail.MessagingException: Could not connect to SMTP host: mail.chinamobilesz.com, port: 25 
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1961) ~[mail-1.4.7.jar:1.4.7] 
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654) ~[mail-1.4.7.jar:1.4.7] 
at javax.mail.Service.connect(Service.java:317) ~[mail-1.4.7.jar:1.4.7] 
at javax.mail.Service.connect(Service.java:176) ~[mail-1.4.7.jar:1.4.7] 
at javax.mail.Service.connect(Service.java:125) ~[mail-1.4.7.jar:1.4.7] 
at javax.mail.Transport.send0(Transport.java:194) ~[mail-1.4.7.jar:1.4.7] 
at javax.mail.Transport.send(Transport.java:124) ~[mail-1.4.7.jar:1.4.7] 
at com.cmsz.processOm.service.impl.EmailSendServiceImpl.sendEmail(EmailSendServiceImpl.java:107) ~[EmailSendServiceImpl.class:na] 
at com.cmsz.processOm.controller.WorkOrderController$SendEmail.isSendEmail(WorkOrderController.java:555) [WorkOrderController$SendEmail.class:na] 
at com.cmsz.processOm.controller.WorkOrderController$SendEmail.run(WorkOrderController.java:524) [WorkOrderController$SendEmail.class:na] 
at java.lang.Thread.run(Thread.java:745) [na:1.7.0.11] 
...... 
많은 자료를 찾아도 문제를 해결하지 못했는데, 분명히 텔레넷이 가능한데, 왜 프로그램에 도착하면 연결이 안 되는지 모르겠다.이렇게 오랫동안 고생하다가 결국 팀장이 나서서 문제를 해결하고 나서야 나도 비로소 원인을 알게 되었다.프로젝트에서 다음과 같은 코드로 인해

// SSL  
MailSSLSocketFactory sf = null; 
try { 
sf = new MailSSLSocketFactory(); 
//   
sf.setTrustAllHosts(true); 
proerties.put("mail.smtp.ssl.enable", "true"); 
proerties.put("mail.smtp.ssl.socketFactory", sf); 
} catch (GeneralSecurityException e) { 
e.printStackTrace(); 
} 
이 코드를 사용한 후에 연결된 것은 465 포트입니다. 25가 아닙니다. 그러나 실제로 이동이 제공한 메일박스는 465라는 포트를 열지 않았기 때문에 465든 25 포트가 연결되지 않습니다. 그래서 이 코드를 제거한 후에 프로젝트를 시작하여 다시 메일을 보내는 데 성공했습니다.
위에서 말한 것은 여러분이 소개한 자바가 메일 발송 기능을 실현할 때 부딪히는 구덩이에 대한 모든 서술입니다. 여러분께 도움이 되었으면 합니다. 만약에 궁금한 것이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 여러분에게 답장을 드리겠습니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기