lunes, 27 de abril de 2020

PDF con IText (4). Enviar los correos

0. Introducción

Ahora toca enviar los correos a cada persona. Para ello recorreremos la carpeta donde se han guardado los "zips" y los enviaremos.

1. Crear una sesión de correo


Tenemos que darle el password, que en este caso como es un proceso automatizado lo guardamos en un fichero de propiedades


Session session = Session.getDefaultInstance(
 mailProps,
 new javax.mail.Authenticator() {
  protected PasswordAuthentication getPasswordAuthentication() {
  return new PasswordAuthentication(fromAddress, mailProps.getProperty("mail.smtp.password"));
 }
});


2. Función de enviar un correo

Para enviar un correo no hace falta:

  1. Sesión
  2. Direccion origen del envio
  3. Direcion/es de destino
  4. Mensaje
  5. Adjuntos



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public static void sendSSLMessage(Session session, String mensaje, String destinos[], String fileURL, String fromAddress) throws MessagingException {
  
 //Mensaje
 Message msg = new MimeMessage(session);
  
 //Direccion procedencia
 InternetAddress addressFrom = new InternetAddress(fromAddress);
 msg.setFrom(addressFrom);
  
 //Direcciones destino
 InternetAddress[] addressTo = new InternetAddress[destinos.length];
 for (int i = 0; i < destinos.length; i++) {
  addressTo[i] = new InternetAddress(destinos[i]);
 }
 msg.setRecipients(Message.RecipientType.TO, addressTo);

 // Setting the Subject and Content Type
 msg.setSubject(mensaje);
 msg.setContent(msg, "text/html");
  
 // Adding text to the message
 BodyPart messageBodyPart = new MimeBodyPart();
 messageBodyPart.setText(mensaje);
  
 //Adjuntos
 Multipart multipart = new MimeMultipart();
 multipart.addBodyPart(messageBodyPart);
 messageBodyPart = new MimeBodyPart();  
    
 DataSource source = new FileDataSource(fileURL);
 messageBodyPart.setDataHandler(new DataHandler(source));
 String fName="ADJUNTO"+fileURL.substring(0,fileURL.lastIndexOf("."));
 messageBodyPart.setFileName(fName);
 multipart.addBodyPart(messageBodyPart);
 msg.setContent(multipart);
  
 // Damos una fecha para evitar el mensaje 552 Mail with no Date header not accepted here
 msg.setSentDate(new java.util.Date());
  
 // Sending the message
 Transport.send(msg);
  
}


3. Función que recorre una carpeta y envia los ficheros zip


Solo inidcaremos como recorremos la carpeta en busca de ficheros "zip"


for (File fileEntry:folder.listFiles( (dir, name) -> name.endsWith(".zip")) ) {

Happy coding!

No hay comentarios :

Publicar un comentario