Aller au contenu principal

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.

attention

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​

OptionTypeDéfautDescription
HoststringnullAdresse du serveur SMTP.
Portint0Port du serveur SMTP.
SecureSocketModeSecureSocketOptionsAutoMode SSL/TLS utilisé par MailKit.
EnableSSLboolDéduit de SecureSocketModeCompatibilité de configuration : false force SecureSocketMode à None, true le remet à Auto s'il était None.
UserNamestringnullIdentifiant utilisé pour s'authentifier au serveur SMTP.
PasswordstringnullMot de passe SMTP.
SenderstringnullAdresse expéditrice par défaut.
CheckCertificateRevocationbooltrueIndique si le client vérifie la révocation du certificat.
IgnoreCertificateRevocationboolfalseDésactive la vérification de révocation du certificat.
ContentTransfertEncodingContentEncodingBase64Encodage du contenu MIME.
LogFilestringnullChemin du fichier de log du protocole SMTP, ou Console.
LogToConsoleboolfalseÉcrit le log du protocole SMTP dans la console en positionnant LogFile à Console.
MailModestringSMTPSMTP pour l'envoi direct, Daemon pour l'écriture de fichiers mail dans un dossier.
MailDaemonFolderstringnullDossier utilisé en mode Daemon.
MailDaemonEncodingstringiso-8859-1 si absentEncodage utilisé pour enregistrer les fichiers du mode Daemon.
UseDaemonFolderboolfalseActive 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().

Server/Services/Registry.cs
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​

TasksController.cs
[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 de Stream ;
  • 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.