Du har ofte behov for at sende e-mails via din ansøgning. Du kan drage fordel af MailKit NuGet-pakken til at sende e-mails i ASP.NET Core. MailKit er et open source-mailklientbibliotek, der kan bruges i .NET- eller .NET Core-applikationer, der kører på Windows-, Linux- eller Mac-systemer. Denne artikel præsenterer en diskussion af, hvordan vi kan bruge MailKit NuGet-pakken til at sende e-mails i ASP.NET Core.
For at arbejde med kodeeksemplerne i denne artikel skal du have Visual Studio 2019 installeret i dit system. Hvis du ikke allerede har en kopi, kan du downloade Visual Studio 2019 her.
Opret et ASP.NET Core API-projekt
Lad os først starte med at oprette et ASP.NET Core-projekt i Visual Studio. Forudsat at Visual Studio 2019 er installeret i dit system, skal du følge trinene beskrevet nedenfor for at oprette et nyt ASP.NET Core-projekt i Visual Studio.
- Start Visual Studio IDE.
- Klik på "Opret nyt projekt."
- I vinduet "Opret nyt projekt" skal du vælge "ASP.NET Core Web Application" fra listen over skabeloner, der vises.
- Klik på Næste.
- I vinduet "Konfigurer dit nye projekt", der vises nedenfor, skal du angive navnet og placeringen for det nye projekt.
- Klik på Opret.
- I vinduet "Opret ny ASP.Net Core-webapplikation" skal du vælge .NET Core som runtime og ASP.NET Core 2.2 (eller nyere) fra rullelisten øverst. Jeg bruger ASP.NET Core 3.0 her.
- Vælg “API” som projektskabelon for at oprette en ny ASP.NET Core API-applikation.
- Sørg for, at afkrydsningsfelterne "Aktivér Docker-support" og "Konfigurer til HTTPS" ikke er markeret, da vi ikke bruger disse funktioner her.
- Sørg for, at godkendelse er indstillet som "Ingen godkendelse", da vi heller ikke bruger godkendelse.
- Klik på Opret.
Dette opretter et nyt ASP.NET Core API-projekt i Visual Studio. Vælg Controllers-løsningsmappen i vinduet Solution Explorer, og klik på "Tilføj -> Controller ..." for at oprette en ny controller med navnet DefaultController. Vi bruger dette projekt i de efterfølgende afsnit i denne artikel.
Installer MailKit NuGet-pakken
For at arbejde med MailKit skal du installere MailKit-pakken fra NuGet. Du kan gøre dette enten via NuGet pakkehåndtering inde i Visual Studio 2019 IDE eller ved at udføre følgende kommando på NuGet pakkehåndteringskonsol:
Install-pakke NETCore.MailKit
Du skal også tilføje referencer til følgende navneområder i din kode:
ved hjælp af MailKit.Net.Smtp;ved hjælp af MimeKit;
Angiv e-mail-konfigurationsmetadata i ASP.NET Core
Følgende kodestykke viser, hvordan du kan specificere e-mail-konfigurationsoplysningerne i filen appsettings.json.
"NotificationMetadata": {"Afsender": "[email protected]",
"SmtpServer": "smtp.gmail.com",
"Modtager": "[email protected]",
"Havn": 465,
"Brugernavn": "[email protected]",
"Adgangskode": "angiv din adgangskode her"
}
For at læse e-mail-konfigurationsdataene drager vi fordel af følgende klasse.
offentlig klasse NotificationMetadata{
offentlig streng Afsender {get; sæt; }
public string Reciever {get; sæt; }
offentlig streng SmtpServer {get; sæt; }
offentlig int Port {get; sæt; }
public string UserName {get; sæt; }
public string Adgangskode {get; sæt; }
}
Sådan kan du læse e-mail-konfigurationsdataene fra appsettings.json-filen i en forekomst af NotificationMetadata-klassen.
offentlig ugyldighed ConfigureServices (IServiceCollection-tjenester){
var notificationMetadata =
Configuration.GetSection ("NotificationMetadata").
Få();
services.AddSingleton (notifikationsmetadata);
services.AddControllers ();
}
Opret en forekomst af klassen EmailMessage i ASP.NET Core
Opret en ny klasse med navnet EmailMessage med følgende kode:
offentlig klasse EmailMessage{
offentlig MailboxAddress-afsender {get; sæt; }
offentlig MailboxAddress-modtager {get; sæt; }
public string Emne {get; sæt; }
public string Content {get; sæt; }
}
Opret en forekomst af MimeMessage-klassen i ASP.NET Core
Den følgende metode illustrerer, hvordan du kan oprette en MimeMessage-forekomst fra en forekomst af vores brugerdefinerede klasse EmailMessage.
privat MimeMessage OpretMimeMessageFromEmailMessage (EmailMessage besked){
var mimeMessage = ny MimeMessage ();
mimeMessage.From.Add (besked.Sender);
mimeMessage.To.Add (besked.Reciever);
mimeMessage.Subject = besked.Subject;
mimeMessage.Body = ny TextPart (MimeKit.Text.TextFormat.Text)
{Text = message.Content};
returner mimeMessage;
}
Send e-mails synkront ved hjælp af MailKit i ASP.NET Core
For at sende en e-mail er vi nødt til at drage fordel af klassen SmtpClient vedrørende MailKit.Net.Smtp-navneområdet. Følgende kodestykke illustrerer, hvordan dette kan gøres.
ved hjælp af (SmtpClient smtpClient = ny SmtpClient ()){
smtpClient.Connect (_notificationMetadata.SmtpServer,
_notificationMetadata.Port, sand);
smtpClient.Authenticate (_notificationMetadata.UserName,
_notificationMetadata.Password);
smtpClient.Send (mimeMessage);
smtpClient.Disconnect (sand);
}
Her er den komplette kode for Get-handlingsmetoden i vores StandardController-klasse for din bekvemmelighed.
public string Get (){
EmailMessage-meddelelse = ny EmailMessage ();
message.Sender = ny MailboxAddress ("Selv", _notificationMetadata.Sender);
message.Reciever = ny MailboxAddress ("Selv", _notificationMetadata.Reciever);
message.Subject = "Velkommen";
message.Content = "Hej verden!";
var mimeMessage = OpretE-mailMessage (besked);
ved hjælp af (SmtpClient smtpClient = ny SmtpClient ())
{
smtpClient.Connect (_notificationMetadata.SmtpServer,
_notificationMetadata.Port, sand);
smtpClient.Authenticate (_notificationMetadata.UserName,
_notificationMetadata.Password);
smtpClient.Send (mimeMessage);
smtpClient.Disconnect (sand);
}
returner "E-mail sendt med succes";
}
Send e-mails asynkront ved hjælp af MailKit i ASP.NET Core
Følgende kodestykke illustrerer en asynkron version af den kode, vi lige har skrevet for at sende e-mails synkront.
ved hjælp af (SmtpClient smtpClient = ny SmtpClient ()){
afventer smtpClient.ConnectAsync (_notificationMetadata.SmtpServer,
_notificationMetadata.Port, sand);
afventer smtpClient.AuthenticateAsync (_notificationMetadata.UserName,
_notificationMetadata.Password);
afventer smtpClient.SendAsync (mimeMessage);
afventer smtpClient.DisconnectAsync (sand);
}
Endelig bemærk, at MailKit også giver dig mulighed for at sende e-mails ved hjælp af skabeloner og endda e-mails, der har vedhæftede filer. Jeg vil demonstrere de ekstra funktioner i MailKit i en fremtidig artikel her.