Dokumentenverzeichnis
Einführung
IEmailSender
ISmtpEmailSender
NullEmailSender
Konfiguration
Integriertes MailKit
Installation
Integration
Nutzung
Anpassung
Einführung
Das Versenden von E-Mails ist eine sehr häufige Aufgabe, die für fast jede Anwendung erforderlich ist. Abp bietet ein Grundgerüst für den einfachen E-Mail-Versand und gliedert die Konfiguration des E-Mail-Dienstes dafür.
IEmailSender
Es handelt sich um einen Dienst, den Sie einfach zum Versenden von E-Mails verwenden können, ohne dessen Details zu kennen. Die Verwendung ist wie folgt:
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);} }
Wir injizieren einfach IEmailSender und verwenden die Send-Methode. Diese Methode verfügt über mehrere überladene Versionen, darunter eine, die MailMessage-Objekte akzeptieren kann (sie kann nicht im .net-Kern verwendet werden, da .net-Kern SmtpClient und MailMessage ausschließt).
ISmtpEmailSender
Es gibt auch einen ISmtpEmailSender, der IEmailSender erweitert und die BuildClient-Methode hinzufügt, um einen SmtpClient zu erstellen. Anschließend können Sie SmtpClient direkt (in .net Core) verwenden Es kann nicht verwendet werden, da der .net-Kern SmtpClient und MailMessage nicht enthält. In den meisten Fällen reicht es aus, ISmtpEmailSender zu verwenden.
NullEmailSender
NullEmailSender ist die Implementierung des Null-Objektentwurfsmusters von IEmailSender und kann in Unit-Tests und der Eigenschaftsabhängigkeitsinjektion verwendet werden.
Konfiguration
E-Mail-Versand verwendet das Einstellungsverwaltungssystem, um die Konfiguration des E-Mail-Versands zu lesen. Die Namen aller Einstellungen werden in Abp.Net.Mail im Formular definiert von Konstanten. In der .EmailSettingNames-Klasse. Im Folgenden sind seine Werte und Beschreibungen aufgeführt:
Abp.Net.Mail.DefaultFromAddress: Die Standardadresse des E-Mail-Absenders (wie im Beispiel oben).
Abp.Net.Mail.DefaultFromDisplayName: Der standardmäßige Anzeigename des E-Mail-Absenders (wie im Beispiel oben).
Abp.Net.Mail.Smtp.Host: IP oder Domänenname des SMTP-Servers (Standard ist 127.0.0.1).
Abp.Net.Mail.Smtp.Port: Der Port des SMTP-Servers (Standard ist 25).
Abp.Net.Mail.Smtp.UserName: Der Benutzername, der angegeben werden muss, wenn der SMTP-Server eine Authentifizierung erfordert.
Abp.Net.Mail.Smtp.Password: Das Passwort, das angegeben werden muss, wenn der SMTP-Server eine Authentifizierung erfordert.
Abp.Net.Mail.Smtp.Domain: Der Domänenname, der angegeben werden muss, wenn der SMTP-Server eine Authentifizierung erfordert.
Abp.Net.Mail.Smtp.EnableSsl: Gibt an, ob ein SMTP-Server (true) eine SSL-Verbindung erfordert (Standard ist false).
Abp.Net.Mail.Smtp.UseDefaultCredentials: Wenn True, verwenden Sie die Standardanmeldeinformationen anstelle des angegebenen Benutzers und Passworts (Standard ist true).
MailKit integrieren
Da .net Core den Standard System.Net.Mail.SmtpClient nicht unterstützt, benötigen wir einen Drittanbieter Zum Versenden von E-Mails ist MailKit glücklicherweise eine gute Alternative zum Standard-Smtpclient und Microsoft empfiehlt die Verwendung.
Das Abp.MailKit-Paket ist elegant in das E-Mail-Versandsystem von Abp integriert, sodass Sie IEmailSender weiterhin wie bisher über MailKit verwenden können.
Installation
Installieren Sie zunächst das Abp.MailKit-Paket in Ihrem Projekt:
Install-Package Abp.MailKit
Integration
AbpMailKitModule-Abhängigkeit zu Ihrem Modul hinzufügen:
[DependsOn(typeof(AbpMailKitModule))]public class MyProjectModule : AbpModule {//...}
Verwendung
Sie können es wie beschrieben tun Verwenden Sie vorher IEmailSender, da das Abp.MailKit-Paket eine MailKit-Implementierung dafür registriert. Verwendet auch die oben definierte Konfiguration.
Anpassung
Beim Erstellen des SmtpClient von MailKit müssen Sie möglicherweise zusätzliche Konfigurationen oder Ihre eigene Anpassung vornehmen. Zu diesem Zeitpunkt können Sie IMailKitSmtpBuilder durch Ihre eigene Implementierung ersetzen Die Schnittstelle kann durch die Übernahme von DefaultMailKitSmtpBuilder vereinfacht werden. Sie möchten beispielsweise Anmeldeinformationen für alle SSL-Verbindungen bereitstellen. In diesem Fall können Sie die Methode „ConfigureClient“ wie folgt überschreiben:
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); } }
Dann in Ihrem Modul In der Methode „PreInitialize“. , ersetzen Sie die Implementierung der IMailKitStmpBuilder-Schnittstelle durch Ihre obige Implementierung:
[DependsOn(typeof(AbpMailKitModule))]public class MyProjectModule : AbpModule {public override void PreInitialize() { Configuration.ReplaceService<IMailKitSmtpBuilder, MyMailKitSmtpBuilder>();}//...}
(Denken Sie daran, die Anweisung „using Abp.Configuration.Startup;“ hinzuzufügen, da die Erweiterungsmethode von „ReplaceService ist in diesem Namensraum definiert).
Das obige ist der detaillierte Inhalt vonWie versendet .net E-Mails?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!