Envio de email em TypeScript: bibliotecas e exemplos de código

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Envio de email em TypeScript: guia completo

TypeScript é um superconjunto estritamente tipado de JavaScript, amplamente utilizado em aplicações web modernas. O envio de email é uma das tarefas essenciais para backend, notificações e marketing. Neste artigo, analisaremos detalhadamente várias bibliotecas para envio de email em TypeScript, incluindo configuração, envio de emails simples e HTML, além de trabalho com anexos.



Por que usar TypeScript para envio de email?

TypeScript adiciona tipagem, o que reduz a quantidade de erros durante o desenvolvimento. No envio de email, isso é especialmente importante: tipos corretos para host SMTP, porta, credenciais e opções do email ajudam a evitar erros em tempo de execução. Além disso, TypeScript suporta construções modernas async/await, tornando o código mais limpo e compreensível.



Principais bibliotecas para envio de email em TypeScript

  • nodemailer — a biblioteca mais popular para Node.js, totalmente compatível com TypeScript. Suporta SMTP, Sendmail, anexos, templates HTML.
  • @sendgrid/mail — cliente oficial do SendGrid para Node.js com tipos TypeScript. Utiliza a API do SendGrid, não requer SMTP.
  • aws-sdk (SES) — Amazon Simple Email Service. Solução poderosa para envios em massa, integração com AWS.
  • emailjs — biblioteca leve com suporte a TypeScript, mas menos popular.


Instalação e configuração do nodemailer com TypeScript

Instale os pacotes via npm:

npm install nodemailernpm install @types/nodemailer --save-dev

Exemplo básico de envio de email via SMTP (Gmail, Yandex, Mail.ru, etc.):

import nodemailer from 'nodemailer';

interface EmailOptions { to: string; subject: string; text?: string; html?: string;}

async function sendEmail(options: EmailOptions): Promise<void> { const transporter = nodemailer.createTransport({ host: 'smtp.gmail.com', port: 587, secure: false, // true para porta 465 auth: { user: 'your-email@gmail.com', pass: 'your-password-or-app-password', }, });

const mailOptions = { from: '"Seu Nome" <your-email@gmail.com>', to: options.to, subject: options.subject, text: options.text, html: options.html, };

const info = await transporter.sendMail(mailOptions); console.log('Email enviado:', info.messageId);}

// UsosendEmail({ to: 'user@example.com', subject: 'Olá do TypeScript!', html: '<h1>Teste</h1><p>Este é um email HTML.</p>',});

Importante: Para Gmail, ative "Acesso a aplicativos menos seguros" ou use uma senha de aplicativo (App Password). Para produção, é melhor usar OAuth2.



Envio de email via SendGrid em TypeScript

SendGrid fornece uma API pronta, que não requer SMTP. Instalação:

npm install @sendgrid/mail

Exemplo de envio:

import sgMail from '@sendgrid/mail';

sgMail.setApiKey('YOUR_SENDGRID_API_KEY');

interface SendGridMessage { to: string; from: string; subject: string; html: string;}

async function sendWithSendGrid(message: SendGridMessage): Promise<void> { try { await sgMail.send(message); console.log('Email enviado via SendGrid'); } catch (error) { console.error('Erro ao enviar:', error); }}

sendWithSendGrid({ to: 'user@example.com', from: 'sender@yourdomain.com', subject: 'Teste SendGrid + TypeScript', html: '<p>Esta mensagem foi enviada via API do SendGrid.</p>',});


Envio de email com anexos em TypeScript

nodemailer suporta anexos de qualquer tipo. Exemplo com arquivo PDF:

import nodemailer from 'nodemailer';import path from 'path';

async function sendWithAttachment()

Recommendations