Envoi d'email en TypeScript : guide complet
TypeScript est un sur-ensemble strictement typé de JavaScript, activement utilisé dans les applications web modernes. L'envoi d'email est l'une des tâches clés pour le backend, les notifications et le marketing. Dans cet article, nous analyserons en détail plusieurs bibliothèques pour l'envoi d'email en TypeScript, y compris la configuration, l'envoi d'emails simples et HTML, ainsi que le travail avec les pièces jointes.
Pourquoi TypeScript pour l'envoi d'email ?
TypeScript ajoute le typage, ce qui réduit le nombre d'erreurs en phase de développement. Lors de l'envoi d'email, c'est particulièrement important : des types corrects pour l'hôte SMTP, le port, les identifiants et les options de l'email aident à éviter les erreurs d'exécution. De plus, TypeScript prend en charge les constructions modernes async/await, ce qui rend le code plus propre et plus compréhensible.
Bibliothèques principales pour l'envoi d'email en TypeScript
- nodemailer — la bibliothèque la plus populaire pour Node.js, entièrement compatible avec TypeScript. Prend en charge SMTP, Sendmail, les pièces jointes, les modèles HTML.
- @sendgrid/mail — le client officiel SendGrid pour Node.js avec des types TypeScript. Utilise l'API SendGrid, ne nécessite pas SMTP.
- aws-sdk (SES) — Amazon Simple Email Service. Solution puissante pour les envois massifs, intégration avec AWS.
- emailjs — bibliothèque légère avec prise en charge de TypeScript, mais moins populaire.
Installation et configuration de nodemailer avec TypeScript
Installez les paquets via npm :
npm install nodemailernpm install @types/nodemailer --save-devExemple de base d'envoi d'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 pour le port 465 auth: { user: 'your-email@gmail.com', pass: 'your-password-or-app-password', }, });
const mailOptions = { from: '"Votre nom" <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 envoyé :', info.messageId);}
// UtilisationsendEmail({ to: 'user@example.com', subject: 'Bonjour depuis TypeScript !', html: '<h1>Test</h1><p>Ceci est un email HTML.</p>',});Important : Pour Gmail, activez "Accès aux applications moins sécurisées" ou utilisez un mot de passe d'application (App Password). Pour la production, il est préférable d'utiliser OAuth2.
Envoi d'email via SendGrid en TypeScript
SendGrid fournit une API prête à l'emploi, ne nécessitant pas SMTP. Installation :
npm install @sendgrid/mailExemple d'envoi :
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 envoyé via SendGrid'); } catch (error) { console.error('Erreur d\'envoi :', error); }}
sendWithSendGrid({ to: 'user@example.com', from: 'sender@yourdomain.com', subject: 'Test SendGrid + TypeScript', html: '<p>Ce message a été envoyé via l\'API SendGrid.</p>',});Envoi d'email avec pièces jointes en TypeScript
nodemailer prend en charge les pièces jointes de tout type. Exemple avec un fichier PDF :
import nodemailer from 'nodemailer';import path from 'path';
async function sendWithAttachment() Aussi dans la bibliothèque
Eigen pour C++ : guide complet avec exemples
Travail avec les images en Rust : aperçu des bibliothèques image, fast_image_resize et autres
Dapper C# (.NET) : guide complet avec exemples
Bibliothèques WebSocket Rust : Tokio-tungstenite et async-tungstenite pour le temps réel
Envoi de SMS en C# (.NET) : Intégration avec l'API des services SMS via HttpClient