martes, 27 de junio de 2017

Enviar mensaje por Correo en forma secuencial

Hola estimados(as)

Hoy les dejo un código en Java que permite enviar correos, usando una base de datos, por ejemplo Mysql. Lo que adjunto lo desarrollé en una empresa, con el fin de que avise a los usuarios que su contraseña de los sistemas va a caducar.

Uso de NetBeans.

Baja la libreria mail.jar de la siguiente url:
https://drive.google.com/file/d/0B0pUPc4ofcySR2hEZGwxVkFyUjg/view?usp=sharing

No te preocupes, es seguro, ya que lo dejé en Google Drive.
De la figura 1, crea un proyecto en Netbeans categoría Java, proyecto Java Application. En mi caso, lo nombré "controlAutentificacion"

Figura 1: Crear proyecto

Figura 2: Librería mail.jar


En la figura 2, se menciona incorporar la librería.

Luego, debes crear las clases correspondientes para así conformar el proceso del programa.

Creando una clase llamada Correo.java

En el código fuente incorpora lo siguiente:

import java.io.File;
import java.io.IOException;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
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;
import javax.mail.Multipart;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMultipart;

Luego, crea un método por ejemplo, llamado "correoEnvia" y hazlo como te indico acá:

 public String correoEnvia (String as_correoUsuario) {

               //as_correoUsuario, esta variable recibe el correo del usuario destinatario

        final String username = "nombreUsuariodeTuCorreo";
      final String password = "contraseñadeTuCorreo";

        correoUsuario.trim();

        String ls_mensajeFinal="";
       Properties props = new Properties();
        props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", "Incorpora la dirección IP de tu servidor de correo");
        props.put("mail.smtp.port", 25);

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

try {

Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("incorpora el correo que verá el destinatario, ejemplo aviso@rrr.cl"));
                        //La siguiente linea permite enviar el mensaje al destinatario
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(as_correoUsuario));
                        // Mensaje que va en el asunto del correo 
message.setSubject("CAMBIO CONTRASEÑA SISTEMAS");
                        ls_mensajeFinal = "Estimado(a) " + "\n\n";
                        ls_mensajeFinal = ls_mensajeFinal + " Usted debe cambiar su contraseña..... \n";
                        ls_mensajeFinal = ls_mensajeFinal + " \n";
                        // variable que contiene el mensaje que se incluye en el correo.
                        message.setText(ls_mensajeFinal);
Transport.send(message);
System.out.println("Enviado");
                        props.clear();
} catch (MessagingException e) {
throw new RuntimeException(e);
          }
       return "ok";
  }


En la clase "Main", puede hacer esto:

import java.sql.*;
 public class Main {
    public static void main(String[] args) {
       
         String ls_correo;
         Correo email;
         email = new Correo();

         // Acá incluye el método que te permita leer los registros o filas de una tabla asociada cierto
         // en la base de datos y obtener el correo de un usuario.
         // ls_correo = buscaCorreo.ObtieneCorreo();
         email.correoEnvia(ls_correo);
         try {
                Thread.sleep(2000);
                } catch(InterruptedException e) {
         }
    }
}


Espero que les sirva
Saludos















Enviar mensaje por Correo en forma secuencial

Hola estimados(as) Hoy les dejo un código en Java que permite enviar correos, usando una base de datos, por ejemplo Mysql. Lo que adjunto...