API JavaMail: servidor SMPT de Gmail

En todos los capítulos anteriores usamos el servidor JangoSMPT para enviar correos electrónicos. En este capítulo, aprenderemos sobre el servidor SMPT proporcionado por Gmail. Gmail (entre otros) ofrece el uso de su servidor SMTP público de forma gratuita.

Los detalles del servidor SMTP de Gmail se pueden encontrar aquí . Como puede ver en los detalles, podemos usar una conexión TLS o SSL para enviar correo electrónico a través del servidor SMTP de Gmail.

El procedimiento para enviar correo electrónico usando el servidor SMTP de Gmail es similar al que se explica en el capítulo Envío de correos electrónicos , excepto que cambiaríamos el servidor host. Como requisito previo, la dirección de correo electrónico del remitente debe ser una cuenta de Gmail activa. Probemos con un ejemplo.

Crear clase Java

Crea un archivo Java SendEmailUsingGMailSMTP, cuyo contenido es el siguiente:

package com.tutorialspoint;

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class SendEmailUsingGMailSMTP {
   public static void main(String[] args) {
      // Recipient's email ID needs to be mentioned.
      String to = "[email protected]";//change accordingly

      // Sender's email ID needs to be mentioned
      String from = "[email protected]";//change accordingly
      final String username = "abc";//change accordingly
      final String password = "*****";//change accordingly

      // Assuming you are sending email through relay.jangosmtp.net
      String host = "smtp.gmail.com";

      Properties props = new Properties();
      props.put("mail.smtp.auth", "true");
      props.put("mail.smtp.starttls.enable", "true");
      props.put("mail.smtp.host", host);
      props.put("mail.smtp.port", "587");

      // Get the Session object.
      Session session = Session.getInstance(props,
      new javax.mail.Authenticator() {
         protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password);
         }
      });

      try {
         // Create a default MimeMessage object.
         Message message = new MimeMessage(session);

         // Set From: header field of the header.
         message.setFrom(new InternetAddress(from));

         // Set To: header field of the header.
         message.setRecipients(Message.RecipientType.TO,
         InternetAddress.parse(to));

         // Set Subject: header field
         message.setSubject("Testing Subject");

         // Now set the actual message
         message.setText("Hello, this is sample for to check send "
            + "email using JavaMailAPI ");

         // Send message
         Transport.send(message);

         System.out.println("Sent message successfully....");

      } catch (MessagingException e) {
            throw new RuntimeException(e);
      }
   }
}

Aquí, el host se establece como smtp.gmail.com y el puerto se establece como 587 . Aquí hemos habilitado la conexión TLS.

Compilar y ejecutar

Ahora que nuestra clase está lista, compilemos la clase anterior. He guardado la clase SendEmailUsingGMailSMTP.java en el directorio:/home/manisha/JavaMailAPIExercise. Necesitaríamos los jars javax.mail.jar y activación.jar en el classpath. Ejecute el siguiente comando para compilar la clase (ambos frascos se colocan en el directorio / home / manisha /) desde el símbolo del sistema:

javac -cp /home/manisha/activation.jar:/home/manisha/javax.mail.jar: SendEmailUsingGMailSMTP.java

Ahora que la clase está compilada, ejecute el siguiente comando para ejecutar:

java -cp /home/manisha/activation.jar:/home/manisha/javax.mail.jar: SendEmailUsingGMailSMTP

Verificar salida

Debería ver el siguiente mensaje en la consola de comandos:

Sent message successfully....