java - 通过 SMTP 发送邮件时,自签名 java 小程序引发错误 "Permission denied"

标签 java email applet smtp socketexception

我有自签名的 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

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

最佳答案

有可能您正在使用 java 1.6 版本从 eclipse 执行代码,而当您将此代码用作小程序时,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 mail api,则 SMTP 服务器必须与 Web 服务器位于同一台机器上 (http://www.oracle.com/technetwork/java/faq-135477.html#applets)

希望对您有所帮助,

关于java - 通过 SMTP 发送邮件时,自签名 java 小程序引发错误 "Permission denied",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13441148/

相关文章:

java - 网格布局实现特定按钮 ActionListener

php - 如何使用php读出/var/mail/username?

java - 即使使用受信任的证书签署 JAR 后仍未知发布者

java - 哪个端口用于 applet servlet 通信

java - 一名用户需要点击确定小程序安全警告6次

java - 如何解决这个编译错误?

java - 如何捕获 HTTP 请求并在 Java 中模拟其响应?

java - 处理 Java CookieManager "Invalid cookie"错误

email - 阻止 Gmail 创建 URL 和电子邮件地址的链接

python - 将电子邮件解析为 json 的库,就像 mailgun 所做的一样