2013-07-16 143 views
1

我得到的響應代碼爲-1,我不確定這是什麼解決方法。辦公室有一個防火牆設置,不能被禁用以及防病毒運行。因爲java代碼是從辦公室運行的,所以我怎麼讓這段代碼通過電子郵件發送測試報告。javax.mail.MessagingException無法連接到SMTP主機端口:25響應-1

[TestNG] Time taken by [email protected]: 16 ms 
DEBUG: JavaMail version 1.4.5 
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers 
DEBUG: Tables of loaded providers 
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]} 
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]} 
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map 
DEBUG: setDebug: JavaMail version 1.4.5 
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc] 
DEBUG SMTP: useEhlo true, useAuth true 
DEBUG SMTP: useEhlo true, useAuth true 
DEBUG SMTP: trying to connect to host "xxx.com", port 25, isSSL false 
DEBUG SMTP: EOF: [EOF] 
DEBUG SMTP: could not connect to host "xxxx.com", port: 25, response: -1 

javax.mail.MessagingException: Could not connect to SMTP host: xxx.com, port: 25, response: -1 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1960) 
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642) 
    at javax.mail.Service.connect(Service.java:317) 
    at javax.mail.Service.connect(Service.java:176) 
    at javax.mail.Service.connect(Service.java:125) 
    at javax.mail.Transport.send0(Transport.java:194) 
    at javax.mail.Transport.send(Transport.java:124) 
    at com.seleniumtests.test.SendFileEmail.trySendEmail(SendFileEmail.java:131) 
    at com.seleniumtests.test.Email.generateReport(Email.java:27) 
    at org.testng.TestNG.generateReports(TestNG.java:1094) 
    at org.testng.TestNG.run(TestNG.java:1053) 
    at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111) 
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204) 
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175) 

代碼發送電子郵件:

Properties props = new Properties(); 
props.put("mail.smtp.host", SMTP_HOST_NAME); 
props.put("mail.smtp.auth", "true"); 
props.put("mail.debug", "true"); 
props.put("mail.smtp.port", SMTP_PORT); 
Session session = Session.getInstance(props, new javax.mail.Authenticator() { 
    protected javax.mail.PasswordAuthentication getPasswordAuthentication() { 
     return new javax.mail.PasswordAuthentication("myusername","mypassword"); 
    } 
}); 
+0

您可以通過從命令提示符輸入「telnet xxx.com 25」連接到同一個郵件服務器嗎? – mthmulders

+0

嗨,由於管理員權限被禁用,我無法做到這一點。 – JaiK

+0

在這種情況下,您是否可以連接到給定郵件服務器的端口25,確保您的雙重,三重確定? – mthmulders

回答

1

Java Mail API FAQ

你應該叫trans.sendMessage(msg, addrs)發送消息。如上所述,send方法是一種靜態便利方法,它獲取自己的Transport對象並創建自己的連接以用於發送;它不使用與調用它的任何Transport對象相關的連接。

總之,不要致電Transport.send(...),請致電Transport.sendMessage(...)來代替。

相關問題