Enviar a Email.java

package helper;
//Mail.java - smtp sending starttls (ssl) authentication enabled
//1.Open a new Java class in netbeans (default package of the project) and name it as "Mail.java"
//2.Copy paste the entire code below and save it.
//3.Right click on the file name in the left side panel and click "compile" then click "Run"
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
public class sendToEmail
{
String  d_email = "[email protected]",
d_password = "mysamplepassword",
d_host = "smtp.gmail.com",
d_port  = "465",
//m_to = "[email protected]",
m_subject = "trial",
m_text = "Hey, this is the testing email.";
public sendToEmail(String strEmailAddress)
{
Properties props = new Properties();
props.put("mail.smtp.user", d_email);
props.put("mail.smtp.host", d_host);
props.put("mail.smtp.port", d_port);
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.auth", "true");
//props.put("mail.smtp.debug", "true");
props.put("mail.smtp.socketFactory.port", d_port);
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
SecurityManager security = System.getSecurityManager();
try
{
Authenticator auth = new SMTPAuthenticator();
Session session = Session.getInstance(props, auth);
//session.setDebug(true);
MimeMessage msg = new MimeMessage(session);
msg.setText(m_text);
msg.setSubject(m_subject);
msg.setFrom(new InternetAddress(d_email));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(strEmailAddress));
Transport.send(msg);
}
catch (Exception mex)
{
mex.printStackTrace();
} 
}
public class SMTPAuthenticator extends javax.mail.Authenticator
{
public PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(d_email, d_password);
}
}
}

parte de mi controller.java

/* Send to Email will run properly soon */
sendToEmail email = new sendToEmail(strEmailAddress);

Cuando ejecuto mi aplicación web tengo este mensaje de error diciendo:

Tipo de informe de Excepción

mensaje

descripción El servidor encontró un
error interno () que evitó que
el cumplimiento de esta solicitud.

excepción
javax.servlet.ServletException:
Servlet ejecución lanzó una excepción

causa raíz
java.lang.NoClassDefFoundError:
javax/mail/Authenticator
el controlador.RegisterTenantController.doPost(RegisterTenantController.java:108)
javax.servlet.http.HttpServlet.servicio(HttpServlet.java:709)
javax.servlet.http.HttpServlet.servicio(HttpServlet.java:802)

¿Qué voy a hacer ahora? Puede alguien ayudarme a conseguir esta aplicación web exitosa?

InformationsquelleAutor bluestella | 2009-10-27

6 Comentarios

  1. 26

    Aunque es posible que esto se deba a un archivo jar que falta en su ruta de clase, no puede ser.

    Es importante para mantener dos o tres excepciones estrecho en nuestra cabeza, en este caso:

    1. java.lang.ClassNotFoundException Esta excepción indica que la clase no se encontró en la ruta de clases. Esto indica que estábamos tratando de cargar la definición de clase, y la clase no existe en el classpath.

    2. java.lang.NoClassDefFoundError Esta excepción indica que la JVM se veía en sus procesos internos de definición de la clase de estructura de datos para la definición de una clase y no la encontró. Esto es diferente a decir que no podía ser cargado desde el classpath. Normalmente, esto indica que anteriormente hemos intentado cargar una clase de la ruta de clases, pero falló por alguna razón – ahora estamos intentando de nuevo, pero ni siquiera vamos a intentar cargarlo, porque la carga de los anteriores. El anterior fallo podría ser un ClassNotFoundException o un ExceptionInInitializerError (lo que indica un fallo en la inicialización estática del bloque) o cualquier número de otros problemas. El punto es, un NoClassDefFoundError no es necesariamente una ruta de clases del problema.

    Me gustaría ver en el código fuente de javax.mail.Authenticator, y ver lo que está haciendo en su inicializador estático. (Buscar en la estática de inicialización de la variable y el bloque estático, si es que hay uno.) Si usted no está recibiendo un ClassNotFoundException antes de la NoClassDefFoundError, está casi garantizado que es una inicialización estática problema.

    He visto errores similares con bastante frecuencia cuando el archivo hosts define incorrectamente la dirección localhost, y el bloque de inicialización estática se basa en InetAddress.getLocalHost(). 127.0.0.1 debe apuntar a ‘localhost’ (y probablemente también localhost.localdomain). NO se debe de señalar el verdadero nombre del host de la máquina (aunque por alguna razón, muchos de los antiguos RedHat Linux instaladores gustó para establecer de forma incorrecta).

  2. 20

    Añadir lo siguiente a su maven dependencia

        <dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.5</version>
    </dependency>
    <dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
    </dependency>
    • con javax correo 1.5.2 que la cara del error [Servlet ejecución lanzó una excepción] con la causa raíz de java.lang.NoClassDefFoundError: com/sun/mail/util/MailLogger
    • Para buscar las últimas versiones, consulte javax.correo & javax.la activación
  3. 8

    Me funcionó una vez en esta situación y yo tenía las dependencias en el classpath. La solución fue incluir javax.correo y javax.la activación de las bibliotecas en el contenedor (por ejemplo. tomcat) carpeta lib. Utilizando maven -conjunto de ellos para siempre alcance y debería funcionar. Usted tendrá de correo electrónico compartido libs en la ruta de clases para todos los proyectos.

    Útil fuente: http://haveacafe.wordpress.com/2008/09/26/113/

  4. 4

    Cuando he tenido este problema, me había incluido el mail-api.jar en mi maven pom archivo. Esa es la especificación del API de sólo. La solución es reemplazar este:

    <!-- DO NOT USE - it's just the API, not an implementation -->
    <groupId>javax.mail</groupId>
    <artifactId>javax.mail-api</artifactId>

    con la implementación de referencia de la api:

    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>

    Sé que tiene al sol en el nombre del paquete, pero esa es la última versión. Esto lo aprendí de los https://stackoverflow.com/a/28935760/1128668

  5. 1

    Incluso me enfrentaba a un error similar. Intente por debajo de los 2 pasos (la primera de las cuales ha sido recomendado aquí ya) –
    1. Agregar las dependencias a su pom.xml

             <dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.5</version>
    </dependency>
    <dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
    </dependency>
    1. Si eso no funciona, coloque manualmente el jar archivos en su .m2\repository\javax\<folder>\<version>\ directorio.

Dejar respuesta

Please enter your comment!
Please enter your name here