Cómo enviar correo electrónico con Mailjet

Mailjet es un servicio de correo electrónico global de terceros que brinda a los usuarios de App Engine un nivel gratuito con 25,000 correos electrónicos al mes. Además, Mailjet ofrece las siguientes características:

  • Una API, interfaz de usuario y retransmisión SMTP para enviar correos electrónicos transaccionales y de marketing
  • Cumplimiento con las normas europeas de protección de datos
  • Características de correo electrónico y capacidad de entrega, como configuración de prioridad personalizada y administración de regulación automatizada
  • Biblioteca de recursos de API en Go, PHP, Nodejs, Java, Python y Ruby para administrar cuentas secundarias, autenticaciones, contactos, campañas, cargas útiles personalizadas, estadísticas, eventos en tiempo real y análisis mediante la API de Eventos
  • Marco de trabajo MJML integrado para crear plantillas de correos electrónicos HTML de respuesta
  • Asistencia las 24 horas, todos los días, en cualquier lugar del mundo y en más de 4 idiomas
  • Capacidad de enviar correos electrónicos desde dominios que no sean gmail.com

Antes de comenzar

Antes de comenzar a enviar correos electrónicos con Mailjet, haz lo siguiente:

  1. Crea una cuenta de Mailjet. Como desarrollador de Google App Engine, puedes comenzar con 25,000 correos electrónicos gratis al mes.
  2. En Mailjet, agrega y verifica la dirección de correo electrónico del remitente.
  3. Anota la clave de API y secreto de tu Configuración de SMTP de Mailjet.
  4. Selecciona o crea un proyecto de GCP.

    Ir a la página Administrar recursos

Configurar

  1. Agrega los módulos de cliente REST de Jersey requeridos a tu aplicación. Por ejemplo, si usas Maven, agrega al archivo pom.xml del proyecto:
    Java 7
    <dependency>
      <groupId>com.sun.jersey</groupId>
      <artifactId>jersey-core</artifactId>
      <version>1.19.4</version>
    </dependency>
    <dependency>
      <groupId>com.sun.jersey</groupId>
      <artifactId>jersey-client</artifactId>
      <version>1.19.4</version>
    </dependency>
    <dependency>
      <groupId>com.sun.jersey.contribs</groupId>
      <artifactId>jersey-multipart</artifactId>
      <version>1.19.4</version>
    </dependency>
    Java 8
    <dependency>
      <groupId>com.sun.jersey</groupId>
      <artifactId>jersey-core</artifactId>
      <version>1.19.4</version>
    </dependency>
    <dependency>
      <groupId>com.sun.jersey</groupId>
      <artifactId>jersey-client</artifactId>
      <version>1.19.4</version>
    </dependency>
    <dependency>
      <groupId>com.sun.jersey.contribs</groupId>
      <artifactId>jersey-multipart</artifactId>
      <version>1.19.4</version>
    </dependency>
  2. Establece las configuraciones de Mailjet, como las clave de API y el nombre de dominio en tu archivo appengine-web.xml:
    <env-variables>
      <env-var name="MAILJET_API_KEY" value="YOUR-MAILJET-API-KEY" />
      <env-var name="MAILJET_SECRET_KEY" value="YOUR-MAILJET-SECRET-KEY" />
    </env-variables>
  3. Importa la biblioteca de Mailjet al código de tu aplicación:
    
    package com.example.appengine.mailjet;
    
    import com.mailjet.client.ClientOptions;
    import com.mailjet.client.MailjetClient;
    import com.mailjet.client.MailjetRequest;
    import com.mailjet.client.MailjetResponse;
    import com.mailjet.client.errors.MailjetException;
    import com.mailjet.client.errors.MailjetSocketTimeoutException;
    import com.mailjet.client.resource.Emailv31;
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.json.JSONArray;
    import org.json.JSONObject;
    

Cómo enviar correos electrónicos

Para enviar un mensaje en el código de tu aplicación, haz lo siguiente:

  1. Crea un cliente de Mailjet nuevo.

  2. Especifica los detalles y el contenido del mensaje, incluidos el correo electrónico y el nombre del remitente, el asunto, el cuerpo del mensaje y los destinatarios.

  3. Recupera la respuesta del servidor para comprobar el estado del mensaje.

Por ejemplo:

Java 7
@SuppressWarnings("serial")
public class MailjetServlet extends HttpServlet {
  private static final String MAILJET_API_KEY = System.getenv("MAILJET_API_KEY");
  private static final String MAILJET_SECRET_KEY = System.getenv("MAILJET_SECRET_KEY");
  private MailjetClient client = new MailjetClient(
      MAILJET_API_KEY, MAILJET_SECRET_KEY, new ClientOptions("v3.1"));

  @Override
  public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException,
      ServletException {
    String recipient = req.getParameter("to");
    String sender = req.getParameter("from");

    MailjetRequest email = new MailjetRequest(Emailv31.resource)
        .property(Emailv31.MESSAGES, new JSONArray()
        .put(new JSONObject()
            .put(Emailv31.Message.FROM, new JSONObject()
            .put("Email", sender)
            .put("Name", "pandora"))
            .put(Emailv31.Message.TO, new JSONArray()
            .put(new JSONObject().put("Email", recipient)))
            .put(Emailv31.Message.SUBJECT, "Your email flight plan!")
            .put(
                Emailv31.Message.TEXTPART,
                "Dear passenger, welcome to Mailjet! May the delivery force be with you!")
            .put(
                Emailv31.Message.HTMLPART,
                "<h3>Dear passenger, welcome to Mailjet!</h3><br /> "
                    + "May the delivery force be with you!")));

    try {
      // trigger the API call
      MailjetResponse response = client.post(email);
      // Read the response data and status
      resp.getWriter().print(response.getStatus());
      resp.getWriter().print(response.getData());
    } catch (MailjetException e) {
      throw new ServletException("Mailjet Exception", e);
    } catch (MailjetSocketTimeoutException e) {
      throw new ServletException("Mailjet socket timed out", e);
    }
  }
}
Java 8
@SuppressWarnings("serial")
public class MailjetServlet extends HttpServlet {

  private static final String MAILJET_API_KEY = System.getenv("MAILJET_API_KEY");
  private static final String MAILJET_SECRET_KEY = System.getenv("MAILJET_SECRET_KEY");
  private MailjetClient client = new MailjetClient(MAILJET_API_KEY, MAILJET_SECRET_KEY);

  @Override
  public void doPost(HttpServletRequest req, HttpServletResponse resp)
      throws IOException, ServletException {
    String recipient = req.getParameter("to");
    String sender = req.getParameter("from");

    MailjetRequest email =
        new MailjetRequest(Email.resource)
            .property(Email.FROMEMAIL, sender)
            .property(Email.FROMNAME, "pandora")
            .property(Email.SUBJECT, "Your email flight plan!")
            .property(
                Email.TEXTPART,
                "Dear passenger, welcome to Mailjet! May the delivery force be with you!")
            .property(
                Email.HTMLPART,
                "<h3>Dear passenger, welcome to Mailjet!</h3><br/>May the delivery force be with "
                    + "you!")
            .property(
                Email.RECIPIENTS, new JSONArray().put(new JSONObject().put("Email", recipient)));

    try {
      // trigger the API call
      MailjetResponse response = client.post(email);
      // Read the response data and status
      resp.getWriter().print(response.getStatus());
      resp.getWriter().print(response.getData());
    } catch (MailjetException e) {
      throw new ServletException("Mailjet Exception", e);
    } catch (MailjetSocketTimeoutException e) {
      throw new ServletException("Mailjet socket timed out", e);
    }
  }
}

Estadísticas

La carga útil de respuesta de una llamada a la API de envío de Mailjet proporciona un MessageID. Puedes usar el MessageID para acceder a la información y las estadísticas del mensaje.

La operación GET de la API de Mailjet en /message muestra información básica sobre el mensaje, como el emisor, el destinatario y el tamaño del mensaje. También muestra el estado actual del mensaje, por ejemplo, si se envió de manera exitosa. Para obtener más información sobre las estadísticas del mensaje, incluidas las respuestas de la API de muestra, consulta la Guía de la API de Mailjet.

API de eventos

La API de eventos de Mailjet ofrece notificaciones en tiempo real a través de solicitudes HTTP (webhooks) de cualquier evento relacionado con los mensajes que enviaste; por ejemplo, cuándo se enviaron o cuándo se abrieron. Esta notificación de evento funciona para todo tipo de mensajes, desde transaccionales hasta campañas de marketing.

Usa la API de Eventos para realizar acciones específicas de manera eficiente, como registrar los mensajes de marketing enviados a tus clientes o actualizar los contactos que anularon la suscripción en tu sistema de administración de relaciones con clientes (CRM). En lugar de sondear la API de Mailjet algunas veces al día, los datos se envían a medida que se producen los eventos, casi en tiempo real.

También puedes agrupar los eventos, algo que resulta útil cuando se envían volúmenes más grandes. Para obtener más instrucciones, consulta la documentación de Mailjet.

API de análisis para correos electrónicos entrantes

También puedes recibir y analizar correos electrónicos con Mailjet, con la entrega del contenido a un webhook. Mailjet organiza toda la información para que puedas guardarla en tu CRM o base de datos.

Como una API de eventos, la API de análisis notifica casi en tiempo real a un webhook específico que envía datos a tu aplicación cuando un mensaje nuevo coincide con una ruta predefinida. Los correos electrónicos se envían a tu aplicación estructurados como un paquete JSON, con toda la información útil que necesitas, como remitente, destinatario, asunto, cuerpo y encabezados.

Para obtener más información, incluidos los campos adicionales que se envían con cada correo electrónico, y las instrucciones para la configuración y el uso del DNS, consulta la documentación de la API de Análisis de Mailjet.

Cómo enviar correos electrónicos desde Google Compute Engine

Si tu proyecto usa Compute Engine para realizar tareas de backend que necesitan enviar correos electrónicos, también puedes utilizar Mailjet desde Compute Engine.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno estándar de App Engine para Java 8