Wie versendet .net E-Mails?

零下一度
Freigeben: 2017-06-23 16:14:58
Original
2503 Leute haben es durchsucht

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);}
}
Nach dem Login kopieren

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
Nach dem Login kopieren

Integration

AbpMailKitModule-Abhängigkeit zu Ihrem Modul hinzufügen:

[DependsOn(typeof(AbpMailKitModule))]public class MyProjectModule : AbpModule
{//...}
Nach dem Login kopieren

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);
    }
}
Nach dem Login kopieren

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>();}//...}
Nach dem Login kopieren

(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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage