C贸mo enviar correos electr贸nicos con Node.js

    Introducci贸n

    El correo electr贸nico es una de las herramientas de comunicaci贸n m谩s utilizadas en aplicaciones web porque le ayuda a llegar a sus usuarios directamente, construir su marca o enviar notificaciones generales.

    Entonces, est谩 pensando en enviar correos electr贸nicos desde su pr贸xima gran aplicaci贸n Node.js. Est谩s en el lugar correcto!

    En este tutorial, aprender谩 a enviar correos electr贸nicos con contenido HTML y archivos adjuntos utilizando el Nodemailer m贸dulo, as铆 como configurar Mailtrap, un servidor SMTP falso, para probar su c贸digo.

    Prerrequisitos

    Para seguir adelante, necesitar谩 tener Node.js y npm (Node Package Manager) instalado localmente.

    Para probar el env铆o de correos electr贸nicos desde una m谩quina de desarrollo local, sin tener que configurar un servidor, usaremos Mailtrap.

    Empezando

    Hay muchos m贸dulos de Node.js para enviar correos electr贸nicos. Entre ellos, nodemailer es la opci贸n m谩s popular. Es un m贸dulo que le brinda la capacidad de enviar correos electr贸nicos f谩cilmente sin problemas.

    Sigamos adelante y creemos una nueva carpeta y una nueva package.json archivo con el npm init mando:

    $ mkdir nodejs-email
    $ cd nodejs-email
    $ npm init -y
    

    los -y La bandera proporcionada omitir谩 la herramienta paso a paso para crear un andamio en su proyecto.

    Ahora instalemos el nodemailer m贸dulo usando npm:

    $ npm install nodemailer
    

    Con el modelo listo para usar, creemos un index.js archivo en nuestro directorio de proyectos.

    En Node.js, el require la sintaxis se usa para cargar m贸dulos en su c贸digo:

    const nodemailer = require('nodemailer');
    

    Uso de SMTP para transporte Nodemailer

    los Protocolo simple de transferencia de correo (SMTP) es un protocolo para enviar mensajes de correo electr贸nico entre servidores. La mayor铆a de los sistemas de correo electr贸nico que env铆an correo a trav茅s de Internet admiten el env铆o basado en SMTP.

    驴Y adivina qu茅? SMTP es el transporte principal utilizado por nodemailer para entregar mensajes.

    Creando un nodemailer El transporte es tan f谩cil como llamar al siguiente m茅todo con algunos par谩metros:

    let transport = nodemailer.createTransport(options[, defaults])
    

    Sin embargo, para enviar un mensaje a trav茅s de nuestro transporte, primero tenemos que configurar la conexi贸n.

    Probando nuestro c贸digo con Mailtrap

    Mailtrap es un “servidor SMTP falso” que se utiliza con fines de desarrollo. En lugar de tener que probar su c贸digo con su propia cuenta de correo electr贸nico y potencialmente inundar su bandeja de entrada con correos electr贸nicos de prueba, puede usar Mailtrap como punto final.

    Cree una nueva cuenta en Mailtrap si a煤n no tiene una, y luego cree una nueva bandeja de entrada y obtenga sus credenciales:

    Ahora, todo lo que tenemos que hacer es poner las credenciales en nodemailerobjeto de transporte:

    let transport = nodemailer.createTransport({
        host: 'smtp.mailtrap.io',
        port: 2525,
        auth: {
           user: 'put_your_username_here',
           pass: 'put_your_password_here'
        }
    });
    

    Con toda esa configuraci贸n, podemos continuar y enviar nuestro primer correo electr贸nico de prueba:

    const message = {
        from: '[email聽protected]', // Sender address
        to: '[email聽protected]',         // List of recipients
        subject: 'Design Your Model S | Tesla', // Subject line
        text: 'Have the most fun you can in a car. Get your Tesla today!' // Plain text body
    };
    transport.sendMail(message, function(err, info) {
        if (err) {
          console.log(err)
        } else {
          console.log(info);
        }
    });
    

    隆Ta-da, eso es!

    Env铆o de un correo electr贸nico HTML

    Si bien el ejemplo anterior funciona bien, es lo que algunos pueden llamar “aburrido”.

    Hoy en d铆a, los correos electr贸nicos tienden a ser de estilo, coloridos, con botones grandes y efectos visuales emocionantes y atractivos. Para lograr esto, incorporamos HTML en nuestros correos electr贸nicos.

    Puede crear estos correos electr贸nicos HTML y enviarlos con nodemailer tan f谩cilmente como podr铆a enviar un correo electr贸nico de texto sin formato. Todo lo que se necesita es usar el html par谩metro en el message objeto en lugar de text:

    const message = {
        from: '[email聽protected]',
        to: '[email聽protected]',
        subject: 'Design Your Model S | Tesla',
        html: '<h1>Have the most fun you can in a car!</h1><p>Get your <b>Tesla</b> today!</p>'
    };
    

    Aunque este ejemplo es bastante simple, solo incluye un <h1>, <p>y <b> etiqueta, puede incluir mucho, mucho m谩s.

    隆Voil脿!

    Tenga en cuenta que tambi茅n puede enviar HTML y texto sin formato en un solo correo electr贸nico proporcionando ambos par谩metros. Con ambas versiones en su mensaje de correo electr贸nico, el cliente de correo electr贸nico del destinatario puede elegir cu谩l mostrar.

    Env铆o de correo electr贸nico con un archivo adjunto

    Existen innumerables razones por las que es posible que desee incluir un archivo adjunto en su correo electr贸nico, como enviar im谩genes, hojas de c谩lculo para el trabajo o videos.

    Como otro ejemplo, si ejecuta un sitio web de comercio electr贸nico, por ejemplo, es posible que desee enviar recibos a sus clientes:

    const nodemailer = require("nodemailer");
    
    let transport = nodemailer.createTransport({
        // ...
    });
    
    const message = {
        from: '[email聽protected]',
        to: '[email聽protected]',
        subject: 'Design Your Model S | Tesla',
        html: '<h1>Have the most fun you can in a car!</h1><p>Get your <b>Tesla</b> today!</p>',
        attachments: [
            { // Use a URL as an attachment
              filename: 'your-testla.png',
              path: 'https://media.gettyimages.com/photos/view-of-tesla-model-s-in-barcelona-spain-on-september-10-2018-picture-id1032050330?s=2048x2048'
          }
        ]
    };
    transport.sendMail(message, function (err, info) {
        // ...
     });
    

    Y tambi茅n puede utilizar un archivo en disco como adjunto. No necesitan estar basados 鈥嬧媏n la web.

    Conclusi贸n

    Ahora puede enviar f谩cilmente correos electr贸nicos personalizados en su c贸digo Node.js utilizando el nodemailer m贸dulo. Y no olvides, el nodemailer documentaci贸n es tu mejor amigo para conocer las opciones m谩s avanzadas.

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *