3

我有自签名的 Java 小程序。当引发未处理的异常时,此小程序应每次发送电子邮件。在那一刻,当我尝试发送邮件时,我的小程序异常崩溃。为了发送电子邮件,我使用了 Java Mail API (javax.mail)。

Java 控制台显示以下文本:

javax.mail.MessagingException: Could not connect to SMTP host: host.ru, port: 25;
 nested exception is:
java.net.SocketException: Permission denied: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1972)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:196)
at ru.gns.JBugMail.sendmail(JBugMail.java:52)
...
Caused by: java.net.SocketException: Permission denied: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:319)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:233)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1938)
... 42 more

请解释一下,我做错了什么?

4

1 回答 1

1

您可能正在使用 java 1.6 版本从 eclipse 执行代码,而当您将此代码用作 applet 时,java 插件正在 java 1.7 上执行?

如果是这种情况,您可以将此参数添加到您的小程序调用中:

<PARAM name="java_arguments" value="-Djava.net.preferIPv4Stack=true">

如果您使用的是 deployJava.js:

<script src="https://www.java.com/js/deployJava.js"></script>
<script>
   var attributes = {...} ;
   var version = '1.7';
   var parameters = { java_arguments : '-Djava.net.preferIPv4Stack=true'...} ;
   deployJava.runApplet(attributes, parameters, version);
 </script>

请记住,如果您使用 java 邮件 api,则 SMTP 服务器必须与 Web 服务器位于同一台机器上 ( http://www.oracle.com/technetwork/java/faq-135477.html#applets )

希望这可以帮助,

于 2014-02-06T14:49:46.593 回答