JavaMail:如何解决SocketException?

时间:2011-12-29 17:47:32

标签: java javamail socketexception

我使用以下代码从Java应用程序发送电子邮件。在我的计算机上,它在第二台计算机上工作正常,但在另一台计算机上(在同一网络中)它没有,尽管我们使用相同的连接设置。

public void connect() throws MessagingException
{
    Authenticator auth = new Authenticator(){ 
        @Override
        protected PasswordAuthentication getPasswordAuthentication()
        {
            return new PasswordAuthentication(smtpUser, smtpPassword);
        }
    };
    Properties props = new Properties();
    props.put("mail.smtp.host", this.smtpServer);
    props.put("mail.smtp.auth", true); 

    session = Session.getDefaultInstance(props, auth);

    store = session.getStore(this.protocol);
    store.connect(this.mailboxServer, this.user, this.password);  //<-- exception is thrown here

}

这是我得到的例外:

javax.mail.MessagingException: connect failed; 
nested exception is: 
    java.net.SocketException: Permission denied: connect
    at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:161)
    at javax.mail.Service.connect(Service.java:288)
    at javax.mail.Service.connect(Service.java:169)
    at com.myapp.MailboxConnection.connect(MailboxConnection.java:66)
caused by: java.net.SocketException: Permission denied: connect

它可能在一台计算机上不起作用的原因是什么?

4 个答案:

答案 0 :(得分:0)

您应该检查使用哪个端口,可能是您机器上允许的端口,但不是另一个端口。

答案 1 :(得分:0)

我认为这可能是网络问题或可能是权限问题(以管理员身份更改您的用户权限)

检查您的系统是否能够连接到邮件服务器

  

ping mailservername / mailserverip例如:ping www.gmail.com/192.168.1.98

答案 2 :(得分:0)

您的代码是否在启用了安全管理器的应用服务器中运行?您的应用程序可能未被Java运行时授予连接到该主机的权限。

答案 3 :(得分:0)

通过卸载Norton AntiVirus解决了

问题