2011-12-29 2 views
0

Я использую следующий код для отправки писем из приложения Java. На моем компьютере он работает отлично, на втором компьютере тоже, но на другом компьютере (в той же сети) это не так, хотя мы используем те же настройки соединения.JavaMail: Как решить SocketException?

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 

Что может быть причиной того, что он не работает на одном компьютере?

ответ

0

проблема решена путем удаления Norton AntiVirus

0

Вы должны проверить, какой порт используется, возможно, это разрешенный порт на вашем компьютере, но не на другом.

+0

Я забыл упомянуть, я также попытался дезактивировать межсетевой экран, но все же это не сработало. – Pedro

0

я думаю, что это может быть проблемой сети или может быть проблемой разрешения (изменить пользователь привилегии администратора)

проверить, будет ли ваша система сможет подключиться к почтовому серверу

пинг mailservername/mailserverip например: ping www.gmail.com/192.168.1.98

+0

ping работает хорошо. Однако, используя Wireshark, я заметил, что на сервер smtp не отправляются пакеты, отличные от пакетов ICMP ping, хотя брандмауэр (Norton 360) отключен, а пользователь имеет права администратора. – Pedro

0

Включен ли ваш код на сервере приложений с включенным менеджером безопасности? Возможно, вашему приложению не удалось получить разрешение на выполнение Java-среды для подключения к этому хосту.

+0

Не знаю об этом менеджере securtiy, но приложение запускается следующим образом: 'java.exe -jar myapp.jar'. Я также попробовал запустить приложение как администратор. – Pedro

+0

Хорошо, это не похоже на проблему с менеджером безопасности. Похоже, что что-то в операционной системе на этом компьютере не позволяет вашему приложению подключаться к этому хосту. Пробуйте советы по часто задаваемым вопросам JavaMail для отладки проблем подключения. –