permission net java javamail permission-denied socketexception

permission - API de JavaMail para iMail-java.net.SocketException: Permiso denegado: conectar



java net socketexception permission denied tomcat (2)

Agregue -Djava.net.preferIPv4Stack=true a las opciones de VM. Otra forma de confirmar si se trata del mismo problema, en Netbeans, haga clic con el botón derecho en el proyecto> propiedades> Bibliotecas y elija una plataforma Java JDK 6 (instálela si no la tiene). Limpia, construye y vuelve a intentarlo. Esto eliminará este problema como el problema.

Crédito https://stackoverflow.com/a/7478027/643500

Tengo problemas para conseguir que una aplicación utilice la API de JavaMail para enviar algunos archivos de forma más automatizada de lo que estamos acostumbrados. Soy muy nuevo en Java y NetBeans, pero he programado en otros idiomas, así que perdóneme si me parece un poco perdido para Java y NetBeans.

Sigo recibiendo este error

java.net.SocketException: permiso denegado: conectar

al intentar conectarse al servidor de correo local. He conectado y enviado el correo correctamente a través del servidor SMTP de gmail con el mismo código, solo cambiando el nombre de usuario, la contraseña y el puerto. También pude hacer telnet a nuestro servidor con éxito y obtener una respuesta 220 del puerto 25. También tengo un archivo de proceso por lotes que se ejecuta y envía correos electrónicos con éxito a través de nuestro servidor local. ¿Alguna idea o idea de por qué no puedo conectarme a través de JavaMail ?

Aquí está el código que envía el correo electrónico.

Código fuente:

public void sendEmail(String customerNumber, ArrayList fileList){ String from = "xxxx"; String username = "xxxx"; String to = "xxxx"; String host = "10.1.1.6"; String pwd = "xxxx"; String port = "25"; Properties props = System.getProperties(); props.put("mail.smtp.host", host); props.put("mail.smtp.port", port); props.put("mail.smtp.user", username); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.debug", "true"); props.put("mail.smtp.socketFactory.port", port); props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.socketFactory.fallback", "false"); Session session = Session.getInstance(props, null); session.setDebug(true); MimeMessage message = new MimeMessage(session); try{ message.setFrom(new InternetAddress(from)); message.setRecipients(Message.RecipientType.TO, to); message.setSubject("Electronic Invoices"); BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setText("Electronic Invoices"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); for(int i = 0; i < fileList.size(); i++){ messageBodyPart = new MimeBodyPart(); String fileName = (String) fileList.get(i); DataSource source = new FileDataSource(fileName); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(fileName); multipart.addBodyPart(messageBodyPart); } message.setContent(multipart); Transport tr; tr = session.getTransport("smtp"); tr.connect(host, username, pwd); tr.sendMessage(message, message.getAllRecipients()); jTextArea2.append("Mail Sent Successfully"); tr.close(); } catch(Exception e){ jTextArea2.append("sendEmail()::" + System.getProperty("line.separator") + e + System.getProperty("line.separator")); System.out.println(e.getMessage()); System.out.println(e.getCause()); } }

Salida de las dos declaraciones de excepción:

DEBUG: setDebug: JavaMail version 1.4.5 DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc] DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "10.1.1.6", port 25, isSSL false Could not connect to SMTP host: 10.1.1.6, port: 25 java.net.SocketException: Permission denied: connect


En caso de simplificar la invocación de la aplicación (por ejemplo, de CLI) utilizada en el código al inicio:

System.setProperty("java.net.preferIPv4Stack", "true")

suponiendo que la aplicación funcionará con la pila de red IPv4 heredada.