0% encontró este documento útil (0 votos)
28 vistas4 páginas

Envío de Correos con Mandrill y Java

Cargado por

Rodrigo Alvaro
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Temas abordados

  • listas en Java,
  • ejemplo de código con adjunto,
  • uso de bibliotecas externas,
  • cabeceras HTTP,
  • método encodeFileToBase64,
  • clave de API,
  • MIME,
  • método main,
  • recipientes de correo,
  • estado de la solicitud
0% encontró este documento útil (0 votos)
28 vistas4 páginas

Envío de Correos con Mandrill y Java

Cargado por

Rodrigo Alvaro
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Temas abordados

  • listas en Java,
  • ejemplo de código con adjunto,
  • uso de bibliotecas externas,
  • cabeceras HTTP,
  • método encodeFileToBase64,
  • clave de API,
  • MIME,
  • método main,
  • recipientes de correo,
  • estado de la solicitud

Uso de HttpClient en Java para Enviar

Correos con la API de Mandrill


1. Enviar un Correo Electrónico Básico

Este ejemplo muestra cómo enviar un correo electrónico utilizando la API de Mandrill a
través de la URL https://mandrillapp.com/api/1.0/messages/send.json en Java. Se utiliza la
clase HttpClient de Java para enviar una solicitud POST.

Código:

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MandrillEmailSender {

public static void main(String[] args) throws Exception {


String apiKey = "TU_API_KEY";
String apiUrl = "https://mandrillapp.com/api/1.0/messages/send.json";

// Crear el cuerpo de la solicitud


Map<String, Object> requestBody = new HashMap<>();
requestBody.put("key", apiKey);

Map<String, Object> message = new HashMap<>();


message.put("html", "<p>Hola, este es un mensaje de prueba.</p>");
message.put("subject", "Asunto de prueba");
message.put("from_email", "[email protected]");
message.put("from_name", "Tu Nombre");

Map<String, Object> recipient = new HashMap<>();


recipient.put("email", "[email protected]");
recipient.put("name", "Nombre del Destinatario");

message.put("to", List.of(recipient));
requestBody.put("message", message);

// Convertir el cuerpo de la solicitud a JSON


ObjectMapper objectMapper = new ObjectMapper();
String requestBodyJson = objectMapper.writeValueAsString(requestBody);

// Crear el cliente HTTP y la solicitud


HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(apiUrl))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(requestBodyJson))
.build();

// Enviar la solicitud y obtener la respuesta


HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());

// Imprimir el estado y cuerpo de la respuesta


System.out.println("HTTP Status: " + response.statusCode());
System.out.println("Response: " + response.body());
}
}

2. Enviar un Correo Electrónico con un Archivo Adjunto

Este ejemplo extiende el anterior para incluir la funcionalidad de adjuntar un archivo al


correo electrónico. El archivo se codifica en base64 y se añade en la sección attachments del
mensaje.

Código:

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Base64;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MandrillEmailSenderWithAttachment {

public static void main(String[] args) throws Exception {


String apiKey = "TU_API_KEY";
String apiUrl = "https://mandrillapp.com/api/1.0/messages/send.json";

// Ruta del archivo que deseas adjuntar


String filePath = "ruta/a/tu/archivo.pdf";
String encodedFile = encodeFileToBase64(filePath);

// Crear el cuerpo de la solicitud


Map<String, Object> requestBody = new HashMap<>();
requestBody.put("key", apiKey);

Map<String, Object> message = new HashMap<>();


message.put("html", "<p>Hola, este es un mensaje de prueba con archivo
adjunto.</p>");
message.put("subject", "Asunto con adjunto");
message.put("from_email", "[email protected]");
message.put("from_name", "Tu Nombre");

Map<String, Object> recipient = new HashMap<>();


recipient.put("email", "[email protected]");
recipient.put("name", "Nombre del Destinatario");
message.put("to", List.of(recipient));

// Adjuntar el archivo
Map<String, Object> attachment = new HashMap<>();
attachment.put("type", "application/pdf"); // Tipo MIME del archivo
attachment.put("name", "archivo.pdf"); // Nombre del archivo
attachment.put("content", encodedFile); // Contenido del archivo en base64
message.put("attachments", List.of(attachment));

requestBody.put("message", message);
// Convertir el cuerpo de la solicitud a JSON
ObjectMapper objectMapper = new ObjectMapper();
String requestBodyJson = objectMapper.writeValueAsString(requestBody);

// Crear el cliente HTTP y la solicitud


HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(apiUrl))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(requestBodyJson))
.build();

// Enviar la solicitud y obtener la respuesta


HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());

// Imprimir el estado y cuerpo de la respuesta


System.out.println("HTTP Status: " + response.statusCode());
System.out.println("Response: " + response.body());
}

// Método para codificar un archivo en base64


public static String encodeFileToBase64(String filePath) throws Exception {
Path path = Paths.get(filePath);
byte[] fileBytes = Files.readAllBytes(path);
return Base64.getEncoder().encodeToString(fileBytes);
}
}

También podría gustarte