Error enviar mail java
un saludo a todos!!
Tengo un pequeño problema al mandar un correo desde una clase de java.
Básicamente tengo una clase q manda el correo a X número de destinatarios, la clase funciona perfectamente si ejecuto la clase desde un main, el problema viene cuando con ayuda de NetBeans genero el .jar y lo incluyo como librería de un domain de glassfish (junto con la libreria necesaria mail.jar), que al llamarlo desde otro jar (ya que esta en un flujo de funciones y el mandar el correo es el último), en el log de glassfish me manda el siguiente error:
javax.mail.NoSuchProviderException: smtp
Así que me atrebo a preguntar si alguien m puede poner en la dirección correcta para solucionar este problema.
Gracias de antemano!!!
- Inicie sesión o regístrese para enviar comentarios
ya revisaste el API
Ya revisaste el API de java mail? ahora porque hacer una jar y ponerlo en el domino ? a glasfish le puedes configurar el servidor de correo y solo implementar la clase que envia el mail?, no entiendo la razon de hacerlo asi, si vas a mandar el mail con un servidor de correo privativo o de una empresa privada revisa la seguridad si no requieres autenticarte antes
Bueno la razón de hacer el
Bueno la razón de hacer el jar es porq forma parte de una aplicación más compleja, cuyo core esta formado por un conjunto de jars, y ya he intentado configurar el servicio de correo de glassfish e implementar la clase pero el resultado es el mismo, con un main si corre, pero al llamarlo mediante otro jar y WebServices no funciona, y de la API de javamail, podrias por favor ser un poco más específico, ya que solo he descargado la libreria de mail.jar
Agradezco tu respuesta.
Código
Postea el código y la configuración de los servicios que usas para el envío de tu correo.
este es el códigopublic
este es el código
Y de configuración de momento estoy haciendo pruebas sin configuraciones de glassfish, si es necesario les muestro otra clase q utiliza un servicio de mail de glassfish
...
Si estás incluyendo tú mismo el mail.jar puede que sea por éso que te aviente la excepción, tengo entendido que el glassfish ya incluye ésa biblioteca así que no la tendrías que estar incluyendo manualmente. Prueba quitando el jar que agregas.
mmmmm
Tienes mucho desorden porque no haces una clase de constantes y las importas, por otra parte dejame te pongo un ejemplo de una clase que envia mail yo yambien la mando con gmail y creo que gmail no requiere autenticacion
Si ya lo he intentado
Al importar la librería de glassfish resulta q el programa no la puede leer, no se si sea cuertión de permisos sobre la carpeta que contiene dicha libreria en glassfish
Te agradecería tu ejemplo
Te agardecería tu ejemplo enormemente, y si lo corres sobre glassfish estaría genial jejeje muchas gracias!!
Cómo?
Éso sí me dejó confuso, cómo que no la puede leer? en tu proyecto tienes como dependencia las bibliotecas del glassfish? si es así deberías de poder usar las clases sin problema evitando importar jars manualmente.
Estoy casi seguro que, como tú lo colocas manual al hacer deploy de tu war ahí es donde truena.
Y ejemplos de cómo enviar email, hay muchos.
Aquí uno.
Aquí otro.
Y otro.
Y otro.
El error lo dice
No he mirado el código y no se si hay otros problemas, pero el primer problema que estás encontrando lo dice el mensaje de error:
javax.mail.NoSuchProviderException: smtp
Y eso es por que no encuentra las clases para enviar mensajes por SMTP, que se encuentran en el fichero smtp.jar. Con el API no basta, también hay que poner en el classpath los proveedores. Habría que comprobar también que el problema no sea un incompatibilidad por haber puesto varias veces el API javamail en el classpath, así que miraría si el Glassfish lo incluye a nivel general y en ese caso no te haría falta, y en ese caso comprobar que el Glassfish también incluye las clases para envío por smtp.
ah sí?
Yo tengo en mi classpath mail-1.4.4.jar y el de Spring para JavaMailSender (creo que spring-context-support) y con eso puedo enviar mails por SMTP (incluso usando TLS). Y es una aplicación JSE, ni siquiera está en un contenedor...