Envois de mails
L'envoi de mails s'effectue depuis le projet Server, par exemple depuis un contrôleur ou un service serveur. Il n'est pas possible d'envoyer un email directement depuis le projet Client.
Configurer un serveur SMTP
La section Lagoon:Smtp du fichier appsettings.json configure le service ISmtp.
La clé Sender définit l'expéditeur par défaut et doit être renseignée si les appels applicatifs ne fournissent pas explicitement d'expéditeur.
{
"Lagoon": {
"Smtp": {
"Host": "smtp.provider.com",
"Port": 587,
"EnableSSL": true,
"UserName": "username",
"Password": "smtpPassword",
"Sender": "app@desirade.fr",
"CheckCertificateRevocation": true
}
}
}
CheckCertificateRevocation est optionnel. Il peut être passé à false si une erreur de vérification de révocation du certificat survient. L'option réelle inverse est IgnoreCertificateRevocation.
Options Lagoon:Smtp
| Option | Type | Défaut | Description |
|---|---|---|---|
Host | string | null | Adresse du serveur SMTP. |
Port | int | 0 | Port du serveur SMTP. |
SecureSocketMode | SecureSocketOptions | Auto | Mode SSL/TLS utilisé par MailKit. |
EnableSSL | bool | Déduit de SecureSocketMode | Compatibilité de configuration : false force SecureSocketMode à None, true le remet à Auto s'il était None. |
UserName | string | null | Identifiant utilisé pour s'authentifier au serveur SMTP. |
Password | string | null | Mot de passe SMTP. |
Sender | string | null | Adresse expéditrice par défaut. |
CheckCertificateRevocation | bool | true | Indique si le client vérifie la révocation du certificat. |
IgnoreCertificateRevocation | bool | false | Désactive la vérification de révocation du certificat. |
ContentTransfertEncoding | ContentEncoding | Base64 | Encodage du contenu MIME. |
LogFile | string | null | Chemin du fichier de log du protocole SMTP, ou Console. |
LogToConsole | bool | false | Écrit le log du protocole SMTP dans la console en positionnant LogFile à Console. |
MailMode | string | SMTP | SMTP pour l'envoi direct, Daemon pour l'écriture de fichiers mail dans un dossier. |
MailDaemonFolder | string | null | Dossier utilisé en mode Daemon. |
MailDaemonEncoding | string | iso-8859-1 si absent | Encodage utilisé pour enregistrer les fichiers du mode Daemon. |
UseDaemonFolder | bool | false | Active l'utilisation du dossier daemon. |
Mode dossier daemon
Le mode Daemon enregistre les mails dans un dossier au lieu de les envoyer directement en SMTP.
{
"Lagoon": {
"Smtp": {
"MailMode": "Daemon",
"MailDaemonFolder": "C:\\Temp\\PendingMails",
"Sender": "app@desirade.fr"
}
}
}
Déclarer le service
Dans le projet Server, enregistrez le service via AddSmtp().
public static class Registry
{
public static void RegisterServices(IServiceCollection services)
{
// Active le service d'envoi de mails côté serveur.
services.AddSmtp();
}
}
Envoyer un mail depuis un contrôleur
[ApiController]
[Route("api/[controller]")]
public class TasksController : LgControllerBase
{
private readonly ISmtp _smtp;
public TasksController(ISmtp smtp)
{
_smtp = smtp;
}
[Authorize(Roles = AppRoles.Admin)]
[HttpPost("CreateTask")]
public async Task Create(UserTask task)
{
// Création de la tâche utilisateur.
// Envoie un mail après la création de la tâche.
await _smtp.SendEmailAsync(
"admin@provider.com",
"Création d'une nouvelle tâche",
"Bonjour,<br />Une nouvelle tâche a été créée.");
}
}
Destinataires et pièces jointes
ISmtp expose des surcharges pour :
- un destinataire unique ou plusieurs destinataires
IEnumerable<string>; - une liste de destinataires en copie carbone
cc; - des pièces jointes sous forme de chemins de fichiers, de
byte[]ou deStream; - un expéditeur explicite ou l'expéditeur par défaut
Sender.
Pour envoyer à plusieurs destinataires dans une chaîne unique, séparez les adresses par des virgules.