Skip to content

Manbiz1987/SenderEmail

Repository files navigation

📧 EmailSenderDLL - Envoi d'Emails via Resend

DLL VB.NET pour envoyer des emails professionnels avec templates HTML sécurisés

.NET Framework Visual Basic Resend Security


⚠️ IMPORTANT - Configuration Sécurisée

Ce projet utilise maintenant des variables d'environnement pour les credentials.

📖 Guide complet de sécurité

Avant d'utiliser cette DLL :

  1. Copiez .env.example vers .env
  2. Configurez vos vraies credentials Resend dans .env
  3. Ne committez JAMAIS le fichier .env dans Git

📋 Table des Matières

  1. Fonctionnalités
  2. Installation
  3. Configuration Resend
  4. Utilisation
  5. Exemples Avancés
  6. API Reference
  7. Gestion des Erreurs
  8. Sécurité
  9. FAQ
  10. Support

✨ Fonctionnalités

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é


🚀 Installation Rapide

Option 1 : Utiliser la DLL compilée

  1. Téléchargez les fichiers depuis bin/Release/net48/ :

    • EmailSenderDLL.dll
    • Newtonsoft.Json.dll
  2. 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
  3. C'est prêt ! Utilisez la DLL dans votre code

Option 2 : Compiler depuis les sources

git clone <votre-repo>
cd SenderEmail
dotnet build -c Release

Les DLL compilées seront dans bin/Release/net48/


🔐 Configuration Resend (Sécurisée)

1. Créer votre fichier .env

# Depuis la racine du projet
cp .env.example .env

2. Configurer vos credentials

É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

3. Obtenir votre clé API Resend

  1. Créez un compte gratuit sur Resend
  2. Allez dans API Keys
  3. Créez une nouvelle clé (commence par re_)
  4. Copiez la clé (vous ne la reverrez plus !)
  5. Collez-la dans votre fichier .env

⚠️ Important : Ne partagez JAMAIS votre clé API. Le fichier .env ne doit JAMAIS être committé dans Git.


📖 Utilisation Simple

Configuration initiale

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

Exemple avec pièces jointes et CC/BCC

' 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
)

📝 Exemples Avancés

Email avec Signature

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
)

Email Erreur

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
)

Email Urgence

Dim success = Await sender.EnvoyerEmailAsync(
    "direction@example.com",
    "🚨 URGENT : Action Requise",
    "<p>Intervention immédiate nécessaire.</p>",
    TypeEmail.Urgence
)

Email avec Pièces Jointes

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
)

Email avec CC et BCC

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
)

Email Complet (toutes les options)

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
)

Envoi en Boucle

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
Next

⚠️ Gestion des Erreurs

Codes d'Erreur Courants

Erreur 401 : Unauthorized

Cause : Clé API invalide
Solution : Vérifiez que votre clé commence par SG. et régénérez-la si nécessaire

Erreur 403 : Forbidden

Cause : Adresse expéditeur non validée
Solution : Validez votre email dans Resend → Settings → Domains

Erreur 429 : Too Many Requests

Cause : Limite de quota dépassée
Solution : Ajoutez des pauses entre les envois (Await Task.Delay(100))

Email dans le Spam

Cause : Nouveau compte Resend
Solutions :

  • Demandez aux destinataires de marquer comme "Non spam"
  • Validez votre domaine dans Resend (recommandé)
  • Configurez SPF/DKIM/DMARC

Exemple de Gestion d'Erreurs

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 Try

❓ FAQ

Q : Comment obtenir une clé API SendGrid ?

R :

  1. Créez un compte sur sendgrid.com
  2. Allez dans Settings → API Keys
  3. Créez une clé avec Full Access
  4. Copiez la clé générée (format: SG.xxxxx...)

Q : Puis-je utiliser n'importe quelle adresse email ?

R : Non, vous devez valider le domaine dans Resend (Settings → Domains).

Q : Combien d'emails puis-je envoyer gratuitement ?

R : Resend offre 3000 emails/mois gratuitement (100/jour).

Q : Puis-je envoyer de vraies pièces jointes ?

R : Cette version affiche uniquement les noms de fichiers. Pour envoyer de vraies pièces jointes, vous pouvez étendre la DLL.

Q : Mes emails vont dans le spam, pourquoi ?

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

Q : Puis-je personnaliser les couleurs ?

R : Les couleurs sont fixes :

  • Info : Bleu #2196F3
  • Erreur : Rouge #f44336
  • Urgence : Orange #ff9800

Q : Comment envoyer du HTML personnalisé ?

R : Utilisez du HTML dans le paramètre message :

Dim message = "<h2>Titre</h2><p>Texte avec <strong>gras</strong></p>"

Q : Compatible avec quels projets ?

R : La DLL fonctionne avec :

  • Console Applications
  • Windows Forms (WinForms)
  • WPF
  • ASP.NET
  • Services Windows
  • Tous projets VB.NET / .NET Framework 4.8+

🎨 Types d'Emails Disponibles

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

📚 Exemples de Code

Consultez les fichiers suivants pour plus d'exemples :


� API Reference

Classe EmailSender

Constructeur

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"
)

Méthode EnvoyerEmailAsync

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) : True si envoyé avec succès, False sinon

Enum TypeEmail

Public Enum TypeEmail
    Info = 0      ' Email informatif (Bleu)
    Erreur = 1    ' Email d'erreur (Rouge)
    Urgence = 2   ' Email urgent (Orange)
End Enum

🔑 Configuration Resend

Obtenir votre clé API Resend

  1. Créez un compte gratuit sur Resend
  2. Allez dans API Keys
  3. Cliquez sur Create API Key
  4. Donnez-lui un nom et copiez la clé générée (commence par re_)
  5. Collez-la dans votre fichier .env

Vérifier votre domaine (recommandé pour production)

  1. Allez dans Domains
  2. Ajoutez votre domaine
  3. Configurez les enregistrements DNS (SPF, DKIM, DMARC)
  4. Attendez la validation

� Structure du Projet

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

📋 Prérequis

  • ✅ .NET Framework 4.8 ou supérieur
  • ✅ Visual Studio 2019/2022 (ou compatible)
  • ✅ Compte Resend (gratuit - 3000 emails/mois)
  • ✅ Projet VB.NET

� Statistiques

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

🛠️ Support et Contact

Développeur : Mohamed Ben El Khouja
Société : Tech Dev DAAM
Email : REMOVED

Besoin d'aide ?

  • 📧 Contactez-nous par email
  • 💡 Consultez Documentation/ExempleUtilisation.vb pour 10 exemples
  • 🧪 Testez avec Tests/TestEmail.vb

📝 Changelog

Version 1.0.0 (31 octobre 2025)

  • ✨ 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

🎯 Notes Importantes

  1. Asynchrone : Utilisez toujours Await avec EnvoyerEmailAsync
  2. Rate Limiting : Ajoutez des pauses (Task.Delay) entre les envois en masse
  3. Validation : Validez votre domaine dans Resend avant utilisation en production
  4. HTML : Le paramètre message accepte du HTML complet
  5. Signatures : Utilisez vbCrLf ou vbLf pour les retours à la ligne
  6. Sécurité : Ne committez jamais votre clé API dans le code source

📝 Licence

Ce projet est développé par Tech Dev DAAM.
Libre d'utilisation pour vos projets personnels et commerciaux.


� Félicitations !

Vous êtes maintenant prêt à envoyer des emails professionnels en 3 lignes de code ! 🚀

Développé avec ❤️ par Tech Dev DAAM

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors