Programiranje

Kako poslati e-pošto v ASP.NET Core

Pogosto boste morali poslati e-pošto prek svoje aplikacije. Paket MailKit NuGet lahko izkoristite za pošiljanje e-pošte v ASP.NET Core. MailKit je odprtokodna knjižnica poštnega odjemalca, ki se lahko uporablja v aplikacijah .NET ali .NET Core, ki se izvajajo v sistemih Windows, Linux ali Mac. V tem članku je predstavljena razprava o tem, kako lahko s paketom MailKit NuGet pošiljamo e-pošto v ASP.NET Core.

Če želite delati s primeri kod v tem članku, morate imeti v sistemu nameščen Visual Studio 2019. Če kopije še nimate, lahko Visual Studio 2019 prenesete tukaj.

Ustvarite projekt ASP.NET Core API

Najprej ustvarimo projekt ASP.NET Core v Visual Studio. Ob predpostavki, da je Visual Studio 2019 nameščen v vašem sistemu, sledite spodnjim korakom, da ustvarite nov projekt ASP.NET Core v Visual Studio.

  1. Zaženite Visual Studio IDE.
  2. Kliknite »Ustvari nov projekt«.
  3. V oknu »Ustvari nov projekt« na prikazanih seznamih predlog izberite »Spletna aplikacija ASP.NET Core«.
  4. Kliknite Naprej.
  5. V naslednjem oknu »Konfiguriranje novega projekta« določite ime in mesto novega projekta.
  6. Kliknite Ustvari.
  7. V oknu »Ustvari novo spletno aplikacijo ASP.Net Core« izberite .NET Core kot izvajalno okolje in ASP.NET Core 2.2 (ali novejšo) s spustnega seznama na vrhu. Tukaj bom uporabljal ASP.NET Core 3.0.
  8. Kot predlogo projekta izberite »API«, da ustvarite novo aplikacijo ASP.NET Core API.
  9. Prepričajte se, da sta potrditveni polji »Omogoči podporo za Docker« in »Konfiguriranje za HTTPS« odstranjeni, saj tukaj ne bomo uporabljali teh funkcij.
  10. Prepričajte se, da je preverjanje pristnosti nastavljeno na »Brez preverjanja pristnosti«, saj tudi preverjanja pristnosti ne bomo uporabljali.
  11. Kliknite Ustvari.

To bo ustvarilo nov projekt API-ja ASP.NET Core v Visual Studio. Izberite mapo rešitve Controllers v oknu Solution Explorer in kliknite »Add -> Controller ...«, da ustvarite nov krmilnik z imenom DefaultController. Ta projekt bomo uporabili v naslednjih oddelkih tega članka.

Namestite paket MailKit NuGet

Za delo z MailKitom namestite paket MailKit iz podjetja NuGet. To lahko storite prek upravitelja paketov NuGet znotraj IDE Visual Studio 2019 ali pa tako, da na konzoli upravitelja paketov NuGet izvedete naslednji ukaz:

Namesti paket NETCore.MailKit

V kodo boste morali dodati tudi sklice na naslednje imenske prostore:

z uporabo MailKit.Net.Smtp;

z uporabo MimeKit;

Navedite metapodatke o konfiguraciji e-pošte v ASP.NET Core

Naslednji delček kode prikazuje, kako lahko v datoteki appsettings.json določite podrobnosti o konfiguraciji e-pošte.

"NotificationMetadata": {

"Sender": "[email protected]",

"SmtpServer": "smtp.gmail.com",

"Prejemnik": "[email protected]",

"Pristanišče": 465,

"Uporabniško ime": "[email protected]",

"Password": "tukaj določite svoje geslo"

  }

Za branje podatkov o konfiguraciji e-pošte bomo izkoristili naslednji razred.

javni razred NotificationMetadata

    {

javni niz Pošiljatelj {get; set; }

javni niz prejemnik {get; set; }

javni niz SmtpServer {get; set; }

javni int Port {get; set; }

javni niz UserName {get; set; }

javni niz Geslo {get; set; }

    }

Tukaj je opisano, kako lahko podatke o konfiguraciji e-pošte preberete iz datoteke appsettings.json v primerek razreda NotificationMetadata.

public void ConfigureServices (storitve IServiceCollection)

{

var notificationMetadata =

Configuration.GetSection ("NotificationMetadata").

Get ();

services.AddSingleton (notificationMetadata);

services.AddControllers ();

}

Ustvarite primerek razreda EmailMessage v ASP.NET Core

Ustvarite nov razred z imenom EmailMessage z naslednjo kodo:

javni razred EmailMessage

    {

javni nabiralnikAddress Sender {get; set; }

javni nabiralnikAdresress Reciever {get; set; }

javni niz Zadeva {get; set; }

javni niz Vsebina {get; set; }

    }

Ustvarite primerek razreda MimeMessage v ASP.NET Core

Naslednja metoda prikazuje, kako lahko ustvarite primerek MimeMessage iz primerka našega razreda EmailMessage po meri.

zasebno MimeMessage CreateMimeMessageFromEmailMessage (sporočilo EmailMessage)

{

var mimeMessage = novo MimeMessage ();

mimeMessage.From.Add (message.Sender);

mimeMessage.To.Add (message.Reciever);

mimeMessage.Subject = message.Subject;

mimeMessage.Body = nov TextPart (MimeKit.Text.TextFormat.Text)

{Text = message.Content};

vrni mimeMessage;

}

Sinhrono pošiljajte e-pošto z uporabo programa MailKit v ASP.NET Core

Za pošiljanje e-pošte moramo izkoristiti razred SmtpClient, ki se nanaša na imenski prostor MailKit.Net.Smtp. Naslednji delček kode prikazuje, kako je to mogoče storiti.

z uporabo (SmtpClient smtpClient = new SmtpClient ())

{

smtpClient.Connect (_notificationMetadata.SmtpServer,

_notificationMetadata.Port, true);

smtpClient.Authenticate (_notificationMetadata.UserName,

_notificationMetadata.Password);

smtpClient.Send (mimeMessage);

smtpClient.Disconnect (true);

}

Tu je celotna koda metode »Get action« našega razreda DefaultController za vaše udobje.

javni niz Get ()

{

Sporočilo EmailMessage = novo EmailMessage ();

message.Sender = new MailboxAddress ("Self", _notificationMetadata.Sender);

message.Reciever = nov poštni nabiralnik ("Self", _notificationMetadata.Reciever);

message.Subject = "Dobrodošli";

message.Content = "Pozdravljen, svet!";

var mimeMessage = CreateEmailMessage (sporočilo);

z uporabo (SmtpClient smtpClient = new SmtpClient ())

 {

smtpClient.Connect (_notificationMetadata.SmtpServer,

_notificationMetadata.Port, true);

smtpClient.Authenticate (_notificationMetadata.UserName,

_notificationMetadata.Password);

smtpClient.Send (mimeMessage);

smtpClient.Disconnect (true);

  }

vrni "E-pošta je bila uspešno poslana";

}

Pošiljajte e-pošto asinhrono z uporabo programa MailKit v ASP.NET Core

Naslednji delček kode prikazuje asinhrono različico kode, ki smo jo pravkar napisali za sinhrono pošiljanje e-pošte.

z uporabo (SmtpClient smtpClient = new SmtpClient ())

 {

počakajte smtpClient.ConnectAsync (_notificationMetadata.SmtpServer,

_notificationMetadata.Port, true);

počakajte smtpClient.AuthenticateAsync (_notificationMetadata.UserName,

_notificationMetadata.Password);

počakajte smtpClient.SendAsync (mimeMessage);

počakajte smtpClient.DisconnectAsync (true);

 }

Na koncu upoštevajte, da MailKit omogoča tudi pošiljanje e-poštnih sporočil s pomočjo predlog in celo e-poštnih sporočil s prilogami. Dodatne funkcije MailKita bom predstavil v naslednjem članku tukaj.

$config[zx-auto] not found$config[zx-overlay] not found