Reputation: 33
I have self-signed java applet. This applet should send email message every time, when raise unhandled exception. My applet crashed with exception in that moment, when I am trying to send mail. For sending email I usung Java Mail API (javax.mail).
Java console shows follow text:
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
Please, explain me, what I am doing wrong?
Upvotes: 3
Views: 567
Reputation: 18517
It's possible that you are executing your code from eclipse with java 1.6 version, and when you use this code as an applet java plug-in is executing on java 1.7?
If this is the case you can add this parameter to your applet call:
<PARAM name="java_arguments" value="-Djava.net.preferIPv4Stack=true">
If you are using 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>
Keep in mind that if you use java mail api the SMTP Server must be located on the same machine as the web server (http://www.oracle.com/technetwork/java/faq-135477.html#applets)
Hope this helps,
Upvotes: 1