npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

encebollado-con-mail

v1.0.3

Published

Módulo de envio de correos usando Nodemailer y variables de entorno.

Readme

encebollado-con-mail


⚡ Descripción

EncebolladoConMail internamente es un módulo de Node.js diseñado para simplificar el envío de correos electrónicos utilizando Nodemailer. Este módulo se enfoca en la seguridad y la facilidad de uso al gestionar todas las credenciales del servicio de correo exclusivamente a través de variables de entorno, asegurando que la información sensible nunca esté directamente en tu código.

Ideal para aplicaciones que necesitan enviar notificaciones, confirmaciones o cualquier tipo de correo electrónico de forma segura.


🚀 Instalación

Para instalar el módulo en tu proyecto, usa npm:

npm install encebollado-con-mail

⚙️ Configuración (Variables de Entorno)

Este módulo requiere que configures tus credenciales de correo electrónico usando variables de entorno en un archivo .env en la raíz de tu proyecto. Esto es crucial para la seguridad.

Crea un archivo llamado .env en la raíz de tu proyecto (al mismo nivel que package.json).

Añade las siguientes variables a tu archivo .env, reemplazando los valores de ejemplo con tus credenciales reales:

EMAIL_SERVICE=tu_servicio_de_correo # Ej: gmail, Outlook365, SMTP (para otros)
[email protected]    # Tu dirección de correo electrónico
EMAIL_APP_PASSWORD=tu_app_password  # ¡IMPORTANTE! Usa una Contraseña de Aplicación para Gmail/Outlook
Nota para Gmail/Outlook: Por motivos de seguridad, es probable que necesites generar una Contraseña de Aplicación (App Password) en la configuración de seguridad de tu cuenta de Google/Microsoft, en lugar de usar tu contraseña normal. Busca "cómo generar una contraseña de aplicación para Gmail" o "Outlook App Password".

¡IMPORTANTE! Añade .env a tu archivo .gitignore para asegurar que tus credenciales nunca se suban a tu repositorio de control de versiones.

💡 Uso Básico

Aquí te mostramos cómo usar encebollado-con-mail en tu aplicación:

// example.js

// Importa la clase EncebolladoConMail desde tu módulo.
import { EncebolladoConMail } from 'encebollado-con-mail'; 

// --- Paso 1: Configurar tu archivo .env ---
// Asegúrate de tener un archivo .env en la raíz de tu proyecto con las siguientes variables:
// EMAIL_SERVICE=gmail
// [email protected]
// EMAIL_APP_PASSWORD=tu_app_password_generada
// ¡Recuerda añadir .env a tu .gitignore!

// --- Paso 2: Crear una instancia del remitente de correos ---
// La clase EncebolladoConMail leerá automáticamente las credenciales de tu archivo .env.
const mailer = new EncebolladoConMail();

// --- Paso 3: Definir las opciones del correo ---
// 'to', 'subject' y 'text' son obligatorios. 'html' y 'from' son opcionales.
const mailOptions = {
    to: '[email protected]', // Puedes poner una o varias direcciones separadas por coma
    subject: '¡Prueba de EncebolladoConMail!',
    text: 'Hola,\n\n¡Este es un correo de prueba enviado con tu módulo EncebolladoConMail!\n\nSaludos.',
    html: '<h3>Hola!</h3><p>Este es un correo <b>HTML</b> enviado con tu módulo <i>EncebolladoConMail</i>!</p>',
    // from: '[email protected]' // Opcional: Si no se especifica, usa EMAIL_USER de .env
};

// --- Paso 4: Enviar el correo ---
async function enviarCorreoDeEjemplo() {
    try {
        const info = await mailer.sendEmail(mailOptions);
        console.log('🎉 Correo de ejemplo enviado con éxito:', info.messageId);
        console.log('Vista previa en Ethereal si usas un servicio de prueba: %s', nodemailer.getTestMessageUrl(info));
    } catch (error) {
        console.error('❌ Error al enviar el correo de ejemplo:', error.message);
        // Si el error es por credenciales, verifica tu archivo .env
        if (error.message.includes('obligatorias')) {
            console.error('Asegúrate de que EMAIL_SERVICE, EMAIL_USER y EMAIL_APP_PASSWORD estén en tu .env.');
        }
    }
}

// Ejecutar la función para enviar el correo
enviarCorreoDeEjemplo();