Répertoire des documents
Introduction
IEmailSender
ISmtpEmailSender
NullEmailSender
Configuration
MailKit intégré
Installation
Intégration
Utilisation
Personnalisation
Introduction
L'envoi d'e-mails est une tâche très courante qui est requise par presque toutes les applications. Abp fournit un cadre de base pour envoyer simplement des e-mails et sépare la configuration du service de messagerie pour celui-ci.
IEmailSender
C'est un service que vous pouvez simplement utiliser pour envoyer des e-mails sans connaître ses détails :
public class TaskManager : IDomainService
{private readonly IEmailSender _emailSender; public TaskManager(IEmailSender emailSender)
{
_emailSender = emailSender;
}public void Assign(Task task, Person person)
{//Assign task to the persontask.AssignedTo = person;//Send a notification email _emailSender.Send(
to: person.EmailAddress,
subject: "You have a new task!",
body: $"A new task is assigned for you: <b>{task.Title}</b>",
isBodyHtml: true);}
}
Copier après la connexion
Nous injectons simplement IEmailSender et utilisons la méthode Send. Cette méthode a plusieurs versions surchargées, dont une qui peut accepter les objets MailMessage (elle ne peut pas être utilisée dans .net core car .net core exclut SmtpClient et MailMessage).
ISmtpEmailSender
Il existe également un ISmtpEmailSender, qui étend IEmailSender et ajoute la méthode BuildClient pour créer un SmtpClient, puis vous pouvez utiliser SmtpClient directement (dans le noyau .net Il ne peut pas être utilisé car le noyau .net ne contient pas SmtpClient et MailMessage). Dans la plupart des cas, il suffit d'utiliser ISmtpEmailSender.
NullEmailSender
NullEmailSender est l'implémentation du modèle de conception d'objet Null d'IEmailSender et peut être utilisé dans les tests unitaires et l'injection de dépendances de propriétés.
Configuration
L'envoi d'email utilise le système de gestion des paramètres pour lire la configuration de l'envoi d'email. Les noms de tous les paramètres sont définis dans Abp.Net.Mail sous le formulaire. de constantes. Dans la classe .EmailSettingNames. Voici ses valeurs et descriptions :
- Abp.Net.Mail.
DefaultFromAddress : L'adresse par défaut de l'expéditeur de l'e-mail (comme dans l'exemple ci-dessus).
- Abp.Net.Mail.
DefaultFromDisplayName : Le nom d'affichage par défaut de l'expéditeur de l'e-mail (comme dans l'exemple ci-dessus).
- Abp.Net.Mail.
Smtp.Host : IP ou nom de domaine du serveur SMTP (la valeur par défaut est 127.0.0.1).
- Abp.Net.Mail.
Smtp.Port : Le port du serveur SMTP (la valeur par défaut est 25).
- Abp.Net.Mail.
Smtp.UserName : Le nom d'utilisateur qui doit être fourni lorsque le serveur SMTP nécessite une authentification.
- Abp.Net.Mail.
Smtp.Password : Le mot de passe qui doit être fourni lorsque le serveur SMTP nécessite une authentification.
- Abp.Net.Mail.
Smtp.Domain : Le nom de domaine qui doit être fourni lorsque le serveur SMTP nécessite une authentification.
- Abp.Net.Mail.
Smtp.EnableSsl : Indique si un serveur SMTP (true) nécessite une connexion SSL (la valeur par défaut est false).
- Abp.Net.Mail.
Smtp.UseDefaultCredentials : Lorsque True, utilisez les informations d'identification par défaut au lieu de l'utilisateur et du mot de passe fournis (la valeur par défaut est true).
Intégrer MailKit
Étant donné que le noyau .net ne prend pas en charge le standard System.Net.Mail.SmtpClient, nous avons besoin d'un fournisseur tiers Heureusement, pour envoyer des e-mails, MailKit est une bonne alternative au client Smtp par défaut et Microsoft recommande de l'utiliser.
Le package Abp.MailKit est élégamment intégré au système d'envoi d'e-mails d'Abp, vous pouvez donc toujours utiliser IEmailSender via MailKit comme avant.
Installation
Tout d'abord, installez le package Abp.MailKit dans votre projet :
Install-Package Abp.MailKit
Copier après la connexion
Intégration
Ajoutez une dépendance AbpMailKitModule à votre module :
[DependsOn(typeof(AbpMailKitModule))]public class MyProjectModule : AbpModule
{//...}
Copier après la connexion
Utilisation
Vous pouvez le faire comme décrit avant Utilisez IEmailSender car le package Abp.MailKit enregistre une implémentation MailKit pour celui-ci. Utilise également la configuration définie ci-dessus.
Personnalisation
Lors de la création de SmtpClient de MailKit, vous pouvez avoir une configuration supplémentaire ou votre propre personnalisation. À ce stade, vous pouvez remplacer IMailKitSmtpBuilder par votre propre implémentation L'enregistrement du. L'interface peut être simplifiée en héritant de DefaultMailKitSmtpBuilder. Par exemple, vous souhaitez fournir un identifiant pour toutes les connexions SSL. Dans ce cas, vous pouvez remplacer la méthode ConfigureClient comme suit :
public class MyMailKitSmtpBuilder : DefaultMailKitSmtpBuilder{public MyMailKitSmtpBuilder(ISmtpEmailSenderConfiguration smtpEmailSenderConfiguration)
: base(smtpEmailSenderConfiguration)
{
}protected override void ConfigureClient(SmtpClient client)
{client.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true; base.ConfigureClient(client);
}
}
Copier après la connexion
Puis dans votre module Dans la méthode PreInitialize. , remplacez l'implémentation de l'interface IMailKitStmpBuilder par votre implémentation ci-dessus :
[DependsOn(typeof(AbpMailKitModule))]public class MyProjectModule : AbpModule
{public override void PreInitialize()
{ Configuration.ReplaceService<IMailKitSmtpBuilder, MyMailKitSmtpBuilder>();}//...}
Copier après la connexion
(n'oubliez pas d'ajouter l'instruction "using Abp.Configuration.Startup;", car la méthode d'extension de ReplaceService est défini dans cet espace de noms).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!