Envio de email em TypeScript: Biblioteca nodemailer
Nodemailer é o módulo mais popular para envio de emails a partir de Node.js e TypeScript. Ele permite enviar emails via SMTP, bem como através de serviços de transporte integrados (SendGrid, Mailgun e outros). A biblioteca suporta totalmente TypeScript (incluindo tipagem) e funciona tanto com emails de texto quanto HTML, anexos e criptografia.
Para que serve o nodemailer?
- Envio de emails transacionais (confirmação de registro, recuperação de senha).
- Envio de notificações (por exemplo, após um pedido no site).
- Integração com formulários de contato.
- Automação de relatórios (dumps de dados diários).
Instalação
npm install nodemailernpm install @types/nodemailer --save-devFuncionalidades principais
- Transporte SMTP — configuração através de qualquer servidor SMTP (Gmail, Yandex, Mail.ru).
- Suporte a HTML e texto — é possível enviar tanto plain text quanto templates HTML elaborados.
- Anexos — arquivos, imagens, PDF.
- Transmissão por stream — envio de arquivos grandes sem carregar na memória.
- Tipagem — suporte total a TypeScript (interfaces para opções).
Exemplo de código em TypeScript
import nodemailer from 'nodemailer';
interface MailOptions { from: string; to: string; subject: string; text?: string; html?: string;}
async function sendEmail(options: MailOptions): Promise<void> { const transporter = nodemailer.createTransport({ host: 'smtp.gmail.com', port: 587, secure: false, auth: { user: 'your-email@gmail.com', pass: 'your-app-password' } });
const info = await transporter.sendMail(options); console.log('Email sent:', info.messageId);}
// UsosendEmail({ from: 'noreply@example.com', to: 'user@example.com', subject: 'Hello from TypeScript', html: '<h1>Welcome!</h1><p>This is a test email.</p>'});Quando usar o nodemailer?
A biblioteca é ideal para aplicações server-side em Node.js/TypeScript, especialmente em conjunto com Express, Next.js ou Nest.js. Se você precisa configurar rapidamente o envio de emails sem configurações complexas — nodemailer é a melhor escolha. Também é adequado para microsserviços e tarefas em segundo plano (por exemplo, com Bull ou Agenda).
Observações importantes
- Para Gmail, use uma senha de aplicativo (não a senha principal).
- Para produção, use variáveis de ambiente (por exemplo,
process.env.SMTP_PASS). - Não se esqueça do tratamento de erros:
try/catché obrigatório.
Nodemailer é o padrão de facto para envio de email em TypeScript. Leve, confiável e com excelente documentação.