"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Cree un servicio de correo electrónico profesional: Gmail OAuth Express + Webhooks

Cree un servicio de correo electrónico profesional: Gmail OAuth Express + Webhooks

Publicado el 2024-11-03
Navegar:367

Las notificaciones por correo electrónico son cruciales para las aplicaciones web modernas. En esta guía, crearemos un servicio de notificación por correo electrónico seguro utilizando Express.js y la autenticación OAuth2 de Gmail. Nuestro servicio aceptará solicitudes de webhooks y enviará correos electrónicos automáticamente en función de los datos entrantes.

Lo que estamos construyendo

Crearemos un servidor Express que:

  • Recibe datos de webhook mediante solicitudes POST
  • Se autentica con Gmail usando OAuth2
  • Envía correos electrónicos personalizados según la carga útil del webhook
  • Maneja los errores con elegancia

Requisitos previos

  • Node.js instalado en su máquina
  • Un proyecto de Google Cloud Console con la API de Gmail habilitada
  • Credenciales OAuth2 (ID de cliente, secreto de cliente, token de actualización)
  • Comprensión básica de Express.js y async/await

Configuración del proyecto

Primero, instale los paquetes requeridos:

npm install express body-parser nodemailer googleapis dotenv

Crea un archivo .env con tus credenciales:

CLIENT_ID=your_client_id
CLIENT_SECRET=your_client_secret
REDIRECT_URI=your_redirect_uri
REFRESH_TOKEN=your_refresh_token
[email protected]

Si tiene dificultades para configurar estas credenciales, como lo hice yo, puede seguir los pasos a continuación...

Paso 1: crear un nuevo proyecto de Google Cloud:

a. Vaya a https://console.cloud.google.com/
b. Haga clic en el menú desplegable del proyecto en la parte superior de la página
do. Haga clic en "Nuevo proyecto"
d. Ingrese un nombre de proyecto y haga clic en "Crear"

Build a Professional Email Service: Gmail OAuth Express   Webhooks

Paso 2: Habilite la API de Gmail:
a. En la barra lateral izquierda, vaya a "API y servicios" > "Biblioteca"
b. Busque "API de Gmail"
do. Haga clic en "API de Gmail" y luego haga clic en "Activar"

Build a Professional Email Service: Gmail OAuth Express   Webhooks


Paso 3: Configurar la pantalla de consentimiento de OAuth:
a. Vaya a "API y servicios" > "Pantalla de consentimiento de OAuth"
b. Elija "Externo" como tipo de usuario y haga clic en "Crear"
do. Complete los campos requeridos:
- Nombre de la aplicación: [El nombre de tu aplicación]
- Correo electrónico de soporte al usuario: [Tu correo electrónico]
- Información de contacto del desarrollador: [Su correo electrónico]
d. Haga clic en "Guardar y continuar"
mi. En la página "Ámbitos", haga clic en "Agregar o quitar ámbitos"
F. Busque y seleccione el alcance "https://mail.google.com/"
gramo. Haga clic en "Actualizar" y luego en "Guardar y continuar"
h. En la página "Usuarios de prueba", haga clic en "Agregar usuarios"
i. Añade tu dirección de Gmail y haz clic en "Guardar y continuar"
j. Revise el resumen y haga clic en "Volver al panel"


Paso 4: Crear credenciales de OAuth2:
a. Vaya a "API y servicios" > "Credenciales"
b. Haga clic en "Crear credenciales" > "ID de cliente OAuth"
do. Elija "Aplicación web" como tipo de aplicación
d. Nombre: [Nombre de tu aplicación]
mi. Orígenes de JavaScript autorizados: agregue el dominio de su servidor (por ejemplo, http://localhost:3000 para desarrollo local)
Build a Professional Email Service: Gmail OAuth Express   Webhooks
F. URI de redireccionamiento autorizados:
- Agregar: https://developers.google.com/oauthplayground
- Agregue la URL de devolución de llamada de su servidor si tiene una (por ejemplo, http://localhost:3000/auth/google/callback)
gramo. Haga clic en "Crear"
h. Una ventana emergente mostrará su ID de cliente y su secreto de cliente. Guárdalos de forma segura.


Paso 5: Obtenga un nuevo token de actualización:
a. Vaya a https://developers.google.com/oauthplayground/

Build a Professional Email Service: Gmail OAuth Express   Webhooks

b. Haga clic en el ícono de ajustes (Me gusta Configuración) en la esquina superior derecha
do. Haga clic en la casilla de verificación "Usar sus propias credenciales de OAuth"
d. Ingrese su nuevo ID de cliente y secreto de cliente
mi. Cierra la configuración
F. En la barra lateral izquierda, busque "Gmail API v1"
gramo. Seleccione https://mail.google.com/
h. Haga clic en "Autorizar API"
i. Elige tu cuenta de Google y concede los permisos solicitados
j. En la siguiente pantalla, haga clic en "Código de autorización de intercambio por tokens"
k. Copie el "token de actualización" de la respuesta

Si encuentra algún problema durante este proceso o al probar la funcionalidad de correo electrónico, proporcione los mensajes de error específicos o el comportamiento que está viendo en los comentarios.


El código explicado

Desglosemos la implementación paso a paso:

1. Configuración inicial y dependencias

const express = require("express");
const bodyParser = require("body-parser");
const nodemailer = require("nodemailer");
const { google } = require("googleapis");
require("dotenv").config();

const app = express();
app.use(bodyParser.json());

Esta sección configura nuestro servidor Express e importa las dependencias necesarias. Usamos body-parser para analizar solicitudes JSON y dotenv para administrar variables de entorno.

2. Configuración de OAuth2

const oAuth2Client = new google.auth.OAuth2(
  CLIENT_ID,
  CLIENT_SECRET,
  REDIRECT_URI
);
oAuth2Client.setCredentials({ refresh_token: REFRESH_TOKEN });

Creamos un cliente OAuth2 utilizando la biblioteca de autenticación de Google. Esto maneja la actualización de tokens y la autenticación con la API de Gmail.

3. Función de envío de correo electrónico

async function sendEmail(webhookData) {
  const {
    receiver_email, //change data based on your needs
  } = webhookData;

  try {
    const accessToken = await oAuth2Client.getAccessToken();
    const transport = nodemailer.createTransport({
      service: "gmail",
      auth: {
        type: "OAuth2",
        user: process.env.EMAIL_USER,
        clientId: CLIENT_ID,
        clientSecret: CLIENT_SECRET,
        refreshToken: REFRESH_TOKEN,
        accessToken: accessToken,
      },
    });

    const mailOptions = {
      from: `Your Name `,
      to: receiver_email,
      subject: ``, //Add Subject of Email
      html: ``, // Add your HTML template here
    };

    return await transport.sendMail(mailOptions);
  } catch (error) {
    console.error("Error in sendMail function:", error);
    throw error;
  }
}

Esta función:

  • Extrae datos de la carga útil del webhook, puede modificar la carga útil según las necesidades
  • Obtiene un token de acceso nuevo
  • Crea un transporte con autenticación OAuth2
  • Envía el correo electrónico con contenido personalizado

4. Punto final del webhook

app.post("/webhook", async (req, res) => {
  try {
    const webhookData = req.body;
    await sendEmail(webhookData);
    res.status(200).send("Email sent successfully");
  } catch (error) {
    console.error("Error processing webhook:", error);
    res.status(500).send("Error processing webhook");
  }
});

Nuestro punto final de webhook:

  • Recibe solicitudes POST
  • Procesa los datos del webhook
  • Envía correos electrónicos
  • Devuelve respuestas apropiadas

Pruebas

Prueba tu webhook usando curl o Postman:

curl -X POST http://localhost:4000/webhook \
-H "Content-Type: application/json" \
-d '{
  "receiver_email": "[email protected]",
}'

Solución de problemas

Problemas y soluciones comunes:

  1. Errores de autenticación: Verifique sus credenciales de OAuth2
  2. Caducidad del token: asegúrese de que el token de actualización sea válido
  3. Datos faltantes: validar la carga útil del webhook

Conclusión

¡Ahora tienes un sistema de notificación por correo electrónico seguro y autenticado por OAuth2! Esta implementación proporciona una base sólida para construir sistemas de notificación más complejos manteniendo al mismo tiempo la seguridad y la confiabilidad.

Espero que esta publicación te resulte útil para configurar el servicio de correo electrónico.

¡Feliz codificación! ?

Declaración de liberación Este artículo se reproduce en: https://dev.to/yashrajxdev/build-a-professional-email-service-gmail-oauth2-express-webhooks-2gp8?1 Si hay alguna infracción, comuníquese con [email protected] para borrarlo
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3