DLL VB.NET pour envoyer des emails professionnels avec templates HTML sécurisés
Ce projet utilise maintenant des variables d'environnement pour les credentials.
Avant d'utiliser cette DLL :
- Copiez
.env.examplevers.env - Configurez vos vraies credentials Resend dans
.env - Ne committez JAMAIS le fichier
.envdans Git
- Fonctionnalités
- Installation
- Configuration Resend
- Utilisation
- Exemples Avancés
- API Reference
- Gestion des Erreurs
- Sécurité
- FAQ
- Support
✅ 7 types d'emails avec templates HTML distincts optimisés Outlook
✅ Configuration sécurisée via variables d'environnement
✅ Support complet CC et BCC (copie carbone et copie cachée)
✅ Signatures personnalisables pour chaque email
✅ Affichage de pièces jointes (liste informative)
✅ Templates HTML responsive adaptés aux mobiles et Outlook
✅ API simple et intuitive - Configuration en 5 lignes !
✅ Asynchrone pour des performances optimales
✅ Conforme aux bonnes pratiques de sécurité
-
Téléchargez les fichiers depuis
bin/Release/net48/:EmailSenderDLL.dllNewtonsoft.Json.dll
-
Ajoutez les références dans votre projet VB.NET :
- Clic droit sur votre projet → Ajouter une référence
- Onglet Parcourir → Sélectionnez les 2 DLL
- Cliquez OK
-
C'est prêt ! Utilisez la DLL dans votre code
git clone <votre-repo>
cd SenderEmail
dotnet build -c ReleaseLes DLL compilées seront dans bin/Release/net48/
# Depuis la racine du projet
cp .env.example .envÉditez .env avec vos vraies valeurs Resend :
RESEND_API_KEY=re_votre_cle_api_ici
RESEND_FROM_EMAIL=votre-email@domaine.com
RESEND_FROM_NAME=Votre Nom ou Entreprise
TEST_TO_EMAIL=destinataire-test@domaine.com- Créez un compte gratuit sur Resend
- Allez dans API Keys
- Créez une nouvelle clé (commence par
re_) - Copiez la clé (vous ne la reverrez plus !)
- Collez-la dans votre fichier
.env
.env ne doit JAMAIS être committé dans Git.
Imports EmailSenderDLL
Module MonProgramme
Private ReadOnly API_KEY As String
Private ReadOnly FROM_EMAIL As String
Private ReadOnly FROM_NAME As String
' Charger la configuration au démarrage
Sub New()
EnvConfig.LoadEnvFile()
API_KEY = EnvConfig.GetRequired("RESEND_API_KEY")
FROM_EMAIL = EnvConfig.GetRequired("RESEND_FROM_EMAIL")
FROM_NAME = EnvConfig.GetRequired("RESEND_FROM_NAME")
End Sub
Sub Main()
' 1. Initialiser le sender
Dim sender As New EmailSender(API_KEY, FROM_EMAIL, FROM_NAME)
' 2. Envoyer un email
Dim success = Await sender.EnvoyerEmailAsync(
destinataire:="destinataire@example.com",
sujet:="Test Email",
message:="<p>Bonjour, ceci est un test !</p>",
typeEmail:=TypeEmail.Info
)
If success Then
Console.WriteLine("✅ Email envoyé avec succès!")
Else
Console.WriteLine("❌ Échec de l'envoi")
End If
End Sub
End Module
' 3. Vérifier le résultat
If success Then
Console.WriteLine("✅ Email envoyé avec succès !")
Else
Console.WriteLine("❌ Erreur lors de l'envoi")
End If' Créer des listes pour CC et BCC
Dim listeCC As New List(Of String) From {
"copie1@example.com",
"copie2@example.com"
}
Dim listeBCC As New List(Of String) From {
"copie.cachee@example.com"
}
' Liste des pièces jointes (affichage uniquement)
Dim pieceJointes As New List(Of String) From {
"Rapport_Q4_2025.pdf",
"Graphiques.xlsx"
}
' Signature personnalisée
Dim signature As String = "Cordialement," & vbCrLf &
"L'équipe Tech Dev DAAM" & vbCrLf &
"Tel: +216 XX XXX XXX"
' Envoyer un email d'erreur avec toutes les options
Dim success = Await sender.EnvoyerEmailAsync(
destinataire:="destinataire@example.com",
sujet:="⚠️ Erreur Critique Détectée",
message:="<p>Une erreur a été détectée dans le système.</p><p><strong>Détails :</strong> Échec de la connexion à la base de données.</p>",
typeEmail:=TypeEmail.Erreur,
signature:=signature,
pieceJointes:=pieceJointes,
cc:=listeCC,
cci:=listeBCC
)Dim signature As String = "Cordialement," & vbCrLf &
"L'équipe Support" & vbCrLf &
"support@example.com"
Dim success = Await sender.EnvoyerEmailAsync(
"client@example.com",
"Confirmation d'inscription",
"<p>Bienvenue ! Votre compte a été créé avec succès.</p>",
TypeEmail.Info,
signature:=signature
)Dim success = Await sender.EnvoyerEmailAsync(
"admin@example.com",
"⚠️ Erreur Système",
"<p><strong>Erreur détectée :</strong></p>" &
"<p>La connexion à la base de données a échoué.</p>",
TypeEmail.Erreur
)Dim success = Await sender.EnvoyerEmailAsync(
"direction@example.com",
"🚨 URGENT : Action Requise",
"<p>Intervention immédiate nécessaire.</p>",
TypeEmail.Urgence
)Dim pieces As New List(Of String) From {
"Rapport_2025.pdf",
"Graphiques.xlsx"
}
Dim success = Await sender.EnvoyerEmailAsync(
"client@example.com",
"Rapport Annuel",
"<p>Veuillez trouver ci-joint le rapport.</p>",
TypeEmail.Info,
pieceJointes:=pieces
)Dim cc As New List(Of String) From {"manager@example.com"}
Dim bcc As New List(Of String) From {"archive@example.com"}
Dim success = Await sender.EnvoyerEmailAsync(
"employe@example.com",
"Validation Congés",
"<p>Votre demande a été approuvée.</p>",
TypeEmail.Info,
cc:=cc,
cci:=bcc
)Dim cc As New List(Of String) From {"copie@example.com"}
Dim bcc As New List(Of String) From {"archive@example.com"}
Dim pieces As New List(Of String) From {"Document.pdf"}
Dim signature As String = "Cordialement," & vbCrLf & "Support"
Dim success = Await sender.EnvoyerEmailAsync(
destinataire:="client@example.com",
sujet:="Dossier Complet",
message:="<p>Voici votre dossier.</p>",
typeEmail:=TypeEmail.Urgence,
signature:=signature,
pieceJointes:=pieces,
cc:=cc,
cci:=bcc
)Dim destinataires As New List(Of String) From {
"user1@example.com",
"user2@example.com",
"user3@example.com"
}
For Each destinataire In destinataires
Dim success = Await sender.EnvoyerEmailAsync(
destinataire,
"Newsletter",
"<p>Votre newsletter mensuelle.</p>",
TypeEmail.Info
)
If success Then
Console.WriteLine($"✅ Envoyé à {destinataire}")
End If
Await Task.Delay(100) ' Pause de 100ms entre chaque envoi
NextCause : Clé API invalide
Solution : Vérifiez que votre clé commence par SG. et régénérez-la si nécessaire
Cause : Adresse expéditeur non validée
Solution : Validez votre email dans Resend → Settings → Domains
Cause : Limite de quota dépassée
Solution : Ajoutez des pauses entre les envois (Await Task.Delay(100))
Cause : Nouveau compte Resend
Solutions :
- Demandez aux destinataires de marquer comme "Non spam"
- Validez votre domaine dans Resend (recommandé)
- Configurez SPF/DKIM/DMARC
Try
Dim success = Await sender.EnvoyerEmailAsync(
"destinataire@example.com",
"Test",
"<p>Message</p>"
)
If success Then
Console.WriteLine("✅ Email envoyé")
Else
Console.WriteLine("❌ Échec de l'envoi")
End If
Catch ex As Exception
Console.WriteLine($"Exception : {ex.Message}")
End TryR :
- Créez un compte sur sendgrid.com
- Allez dans Settings → API Keys
- Créez une clé avec Full Access
- Copiez la clé générée (format:
SG.xxxxx...)
R : Non, vous devez valider le domaine dans Resend (Settings → Domains).
R : Resend offre 3000 emails/mois gratuitement (100/jour).
R : Cette version affiche uniquement les noms de fichiers. Pour envoyer de vraies pièces jointes, vous pouvez étendre la DLL.
R : C'est normal pour les nouveaux comptes Resend. Solutions :
- Demandez aux destinataires de marquer comme "Non spam"
- Validez votre domaine dans Resend
- Envoyez régulièrement pour construire votre réputation
R : Les couleurs sont fixes :
- Info : Bleu #2196F3
- Erreur : Rouge #f44336
- Urgence : Orange #ff9800
R : Utilisez du HTML dans le paramètre message :
Dim message = "<h2>Titre</h2><p>Texte avec <strong>gras</strong></p>"R : La DLL fonctionne avec :
- Console Applications
- Windows Forms (WinForms)
- WPF
- ASP.NET
- Services Windows
- Tous projets VB.NET / .NET Framework 4.8+
| Type | Valeur Enum | Couleur | Utilisation |
|---|---|---|---|
| 🔵 Info | TypeEmail.Info |
Bleu #2196F3 | Notifications informatives |
| 🔴 Erreur | TypeEmail.Erreur |
Rouge #f44336 | Alertes d'erreurs |
| 🟠 Urgence | TypeEmail.Urgence |
Orange #ff9800 | Messages urgents |
Consultez les fichiers suivants pour plus d'exemples :
- � Exemples Complets - 10 exemples détaillés
- 🧪 Tests Fonctionnels - 8 tests prêts à l'emploi
Public Sub New(apiKey As String, fromEmail As String, fromName As String)Paramètres :
apiKey: Clé API Resend (format:re_xxxxx...)fromEmail: Adresse email de l'expéditeur (doit être validée dans Resend)fromName: Nom affiché de l'expéditeur
Exemple :
Dim sender As New EmailSender(
"SG.xxxxxxxxxxxxx",
"contact@example.com",
"Mon Entreprise"
)Public Async Function EnvoyerEmailAsync(
destinataire As String,
sujet As String,
message As String,
Optional typeEmail As TypeEmail = TypeEmail.Info,
Optional signature As String = Nothing,
Optional pieceJointes As List(Of String) = Nothing,
Optional cc As List(Of String) = Nothing,
Optional cci As List(Of String) = Nothing
) As Task(Of Boolean)Paramètres :
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
destinataire |
String |
✅ Oui | Adresse email du destinataire principal |
sujet |
String |
✅ Oui | Sujet de l'email |
message |
String |
✅ Oui | Contenu HTML du message |
typeEmail |
TypeEmail |
❌ Non | Info (défaut), Erreur, ou Urgence |
signature |
String |
❌ Non | Signature personnalisée en bas de l'email |
pieceJointes |
List(Of String) |
❌ Non | Liste des noms de fichiers à afficher |
cc |
List(Of String) |
❌ Non | Liste d'emails en copie carbone |
cci |
List(Of String) |
❌ Non | Liste d'emails en copie cachée |
Retour :
Task(Of Boolean):Truesi envoyé avec succès,Falsesinon
Public Enum TypeEmail
Info = 0 ' Email informatif (Bleu)
Erreur = 1 ' Email d'erreur (Rouge)
Urgence = 2 ' Email urgent (Orange)
End Enum- Créez un compte gratuit sur Resend
- Allez dans API Keys
- Cliquez sur Create API Key
- Donnez-lui un nom et copiez la clé générée (commence par
re_) - Collez-la dans votre fichier
.env
- Allez dans Domains
- Ajoutez votre domaine
- Configurez les enregistrements DNS (SPF, DKIM, DMARC)
- Attendez la validation
SenderEmail/
├── README.md # Ce fichier - Documentation complète
├── EmailSender.vb # Code source principal (350+ lignes)
├── EmailSenderDLL.vbproj # Fichier projet VB.NET
├── .gitignore # Configuration Git
│
├── bin/Release/net48/ # 🎁 DLL COMPILÉE (Prête à utiliser)
│ ├── EmailSenderDLL.dll # DLL principale (27 KB)
│ ├── Newtonsoft.Json.dll # Dépendance JSON (695 KB)
│ └── EmailSenderDLL.xml # Documentation IntelliSense (2.7 KB)
│
├── Documentation/
│ └── ExempleUtilisation.vb # 10 exemples de code complets
│
└── Tests/
├── TestEmail.vb # 8 tests fonctionnels
└── TestEmail.vbproj # Projet de test
- ✅ .NET Framework 4.8 ou supérieur
- ✅ Visual Studio 2019/2022 (ou compatible)
- ✅ Compte Resend (gratuit - 3000 emails/mois)
- ✅ Projet VB.NET
| Métrique | Valeur |
|---|---|
| Lignes de code | 350+ |
| Taille DLL | 27 KB |
| Dépendances | 1 (Newtonsoft.Json) |
| Types d'emails | 3 (Info, Erreur, Urgence) |
| Exemples fournis | 10 |
| Tests inclus | 8 |
| Compilation | ✅ Sans erreurs |
Développeur : Mohamed Ben El Khouja
Société : Tech Dev DAAM
Email : REMOVED
- 📧 Contactez-nous par email
- 💡 Consultez
Documentation/ExempleUtilisation.vbpour 10 exemples - 🧪 Testez avec
Tests/TestEmail.vb
- ✨ Première version stable
- ✅ 3 templates HTML (Info, Erreur, Urgence)
- ✅ Support CC et BCC
- ✅ Signatures personnalisables
- ✅ Affichage de pièces jointes
- ✅ Documentation complète
- ✅ 10 exemples de code
- ✅ 8 tests fonctionnels
- Asynchrone : Utilisez toujours
AwaitavecEnvoyerEmailAsync - Rate Limiting : Ajoutez des pauses (
Task.Delay) entre les envois en masse - Validation : Validez votre domaine dans Resend avant utilisation en production
- HTML : Le paramètre
messageaccepte du HTML complet - Signatures : Utilisez
vbCrLfouvbLfpour les retours à la ligne - Sécurité : Ne committez jamais votre clé API dans le code source
Ce projet est développé par Tech Dev DAAM.
Libre d'utilisation pour vos projets personnels et commerciaux.
Vous êtes maintenant prêt à envoyer des emails professionnels en 3 lignes de code ! 🚀
Développé avec ❤️ par Tech Dev DAAM