Librairie mail scalable via API externe
npm install wontan-mailX-API-KEY)
bash
npm install wontan-mail
`
`bash
yarn add wontan-mail
`
🚀 Démarrage rapide
$3
`javascript
import { MailClient } from 'wontan-mail';
import { renderToStaticMarkup } from 'react-dom/server';
const client = new MailClient('your-api-key');
const templateContent = renderToStaticMarkup(
CredentialsMail({ email: user.email, password: newPassword })
);
client.sendMail({
recipients: ['user@example.com'],
subject: "My mail",
template_content: templateContent,
})
.then(response => {
console.log('✅ Email envoyé avec succès !', response);
})
.catch(error => {
console.error('❌ Erreur lors de l\'envoi :', error.message);
});
`
Composant credentials
`javascript
export default function CredentialsMail({ email, password }: { email: string, password: string }) {
return (
Bonjour,
Vos identifiants de connexion sont :
📧 Email : {email}
🔑 Mot de passe : {password}
Merci et à bientôt !
);
}
`
$3
`typescript
import { MailClient } from 'wontan-mail';
const client = new MailClient('your-api-key');
try {
const response = await client.sendMail({
recipients: ['user@example.com'],
template_name: 'welcome',
server_name: 'default',
params: {
name: 'John Doe',
company: 'Acme Corp'
}
});
console.log('✅ Email envoyé avec succès !', response);
} catch (error) {
console.error('❌ Erreur lors de l\'envoi :', error.message);
}
`
$3
`javascript
import { MailClient } from 'wontan-mail';
const client = new MailClient('your-api-key');
client.sendMail({
recipients: ['user@example.com'],
template_name: 'welcome',
server_name: 'default',
params: { name: 'John Doe' }
})
.then(response => {
console.log('✅ Email envoyé avec succès !', response);
})
.catch(error => {
console.error('❌ Erreur lors de l\'envoi :', error.message);
});
`
$3
`javascript
const { MailClient } = require('wontan-mail');
const client = new MailClient('your-api-key');
// ... reste du code identique
`
📚 Documentation API
$3
`typescript
new MailClient(apiKey: string, baseUrl?: string)
`
| Paramètre | Type | Obligatoire | Description |
|-----------|------|-------------|-------------|
| apiKey | string | ✅ | Votre clé API Wontan Mail |
| baseUrl | string | ❌ | URL de base de l'API (optionnel) |
$3
`typescript
sendMail(options: MailOptions): Promise
`
#### MailOptions
| Propriété | Type | Obligatoire | Description |
|-----------|------|-------------|-------------|
| recipients | string[] | ✅ | Liste des adresses email destinataires |
| template_name | string | ✅ | Nom du template à utiliser |
| server_name | string | ✅ | Nom du serveur d'envoi configuré |
| params | object | ❌ | Paramètres dynamiques pour le template |
#### MailResponse
`typescript
interface MailResponse {
status: string;
message: string;
// autres propriétés selon la réponse API
}
`
🛠️ Configuration
$3
Rendez-vous sur wontan-mail.com pour créer votre compte et accéder à votre tableau de bord.
$3
1. Connectez-vous et accédez aux serveurs
2. Configurez votre serveur SMTP pour l'envoi d'emails
3. Notez le nom de votre serveur configuré
$3
1. Accédez à la section templates
2. Créez vos templates d'emails avec design personnalisé
3. Utilisez les variables dynamiques avec la syntaxe {{variable}}
$3
1. Dans votre tableau de bord, générez votre clé API
2. Copiez la clé qui commence par wm_
3. Gardez cette clé secrète et sécurisée
$3
Pour des raisons de sécurité, vous devez autoriser les domaines qui peuvent utiliser votre clé API :
1. Accédez aux paramètres de sécurité : Rendez-vous sur wontan-mail.com/profile/#authorized-hosts
2. Ajoutez vos domaines : Listez tous les domaines autorisés à utiliser votre API
- Pour le développement local : localhost, 127.0.0.1
- Pour la production : yourdomain.com, api.yourdomain.com
3. Sauvegardez : N'oubliez pas de sauvegarder vos modifications
> ⚠️ Important : Sans cette configuration, vos requêtes API seront rejetées pour des raisons de sécurité.
💡 Exemples d'utilisation
$3
`typescript
const welcomeEmail = await client.sendMail({
recipients: ['newuser@example.com'],
template_name: 'welcome',
server_name: 'marketing',
params: {
firstName: 'Alice',
companyName: 'TechCorp',
activationLink: 'https://app.example.com/activate/xyz123'
}
});
`
$3
`typescript
const notificationEmail = await client.sendMail({
recipients: ['admin@example.com', 'support@example.com'],
template_name: 'alert',
server_name: 'system',
params: {
alertType: 'ERROR',
timestamp: new Date().toISOString(),
details: 'Service temporairement indisponible'
}
});
`
$3
`typescript
const recipients = [
'user1@example.com',
'user2@example.com',
'user3@example.com'
];
const bulkEmail = await client.sendMail({
recipients,
template_name: 'newsletter',
server_name: 'newsletter',
params: {
month: 'Janvier 2024',
featuredArticle: 'Les nouveautés de notre plateforme'
}
});
`
🚨 Gestion d'erreurs
`typescript
try {
await client.sendMail({
recipients: [], // ❌ Tableau vide - génère une erreur
template_name: 'welcome',
server_name: 'default'
});
} catch (error) {
if (error.message.includes('recipients must be a non-empty array')) {
console.error('❌ Aucun destinataire spécifié');
} else if (error.message.includes('API Error: 401')) {
console.error('❌ Clé API invalide');
} else if (error.message.includes('API Error: 404')) {
console.error('❌ Template ou serveur non trouvé');
} else {
console.error('❌ Erreur inconnue :', error.message);
}
}
`
🔧 Développement
`bash
Cloner le repository
git clone https://github.com/koulibalyamadou10/wontan-mail.git
Installer les dépendances
npm install
Compiler TypeScript
npm run build
Lancer les tests
npm test
Mode développement avec rechargement automatique
npm run dev
`
🤝 Contribution
Les contributions sont les bienvenues ! Voici comment contribuer :
1. Fork le projet
2. Créez une branche pour votre fonctionnalité (git checkout -b feature/AmazingFeature)
3. Commitez vos changements (git commit -m 'Add some AmazingFeature')
4. Push vers la branche (git push origin feature/AmazingFeature`)