Programavimas

Kaip siųsti el. Laiškus naudojant ASP.NET Core

Naudodamiesi programa dažnai turėsite siųsti el. Laiškus. Galite pasinaudoti „MailKit NuGet“ paketo pranašumais, jei norite siųsti el. Laiškus į „ASP.NET Core“. „MailKit“ yra atvirojo kodo pašto kliento biblioteka, kuri gali būti naudojama .NET arba .NET Core programose, veikiančiose „Windows“, „Linux“ ar „Mac“ sistemose. Šiame straipsnyje aptariama, kaip mes galime naudoti „MailKit NuGet“ paketą el. Laiškams siųsti į „ASP.NET Core“.

Norėdami dirbti su šiame straipsnyje pateiktais kodų pavyzdžiais, sistemoje turite būti įdiegę „Visual Studio 2019“. Jei dar neturite kopijos, galite atsisiųsti „Visual Studio 2019“ čia.

Sukurkite ASP.NET Core API projektą

Pirmiausia sukurkime ASP.NET Core projektą „Visual Studio“. Darant prielaidą, kad „Visual Studio 2019“ yra įdiegta jūsų sistemoje, atlikite toliau nurodytus veiksmus, kad sukurtumėte naują „ASP.NET Core“ projektą „Visual Studio“.

  1. Paleiskite „Visual Studio IDE“.
  2. Spustelėkite „Sukurti naują projektą“.
  3. Lange „Kurti naują projektą“ iš rodomų šablonų sąrašo pasirinkite „ASP.NET Core Web Application“.
  4. Spustelėkite Pirmyn.
  5. Tada rodomame lange „Konfigūruoti naują projektą“ nurodykite naujo projekto pavadinimą ir vietą.
  6. Spustelėkite Sukurti.
  7. Lange „Kurti naują ASP.Net pagrindinę žiniatinklio programą“ viršuje esančiame išskleidžiamajame sąraše pasirinkite .NET Core kaip vykdymo laiką ir ASP.NET Core 2.2 (ar naujesnę). Čia naudosiu ASP.NET Core 3.0.
  8. Pasirinkite „API“ kaip projekto šabloną, kad sukurtumėte naują ASP.NET Core API programą.
  9. Įsitikinkite, kad nepažymėti žymės langeliai „Įgalinti„ Docker “palaikymą“ ir „Konfigūruoti HTTPS“, nes čia nenaudosime tų funkcijų.
  10. Įsitikinkite, kad autentifikavimas nustatytas kaip „Be autentifikavimo“, nes mes taip pat nenaudosime autentifikavimo.
  11. Spustelėkite Sukurti.

Tai sukurs naują ASP.NET Core API projektą „Visual Studio“. Lange Solution Explorer pasirinkite „Controllers solution“ aplanką ir spustelėkite „Add -> Controller…“, kad sukurtumėte naują valdiklį pavadinimu „DefaultController“. Šį projektą panaudosime tolesniuose šio straipsnio skyriuose.

Įdiekite „MailKit NuGet“ paketą

Norėdami dirbti su „MailKit“, turėtumėte įdiegti „MailKit“ paketą iš „NuGet“. Tai galite padaryti naudodami „NuGet“ paketų tvarkytuvę „Visual Studio 2019 IDE“ arba vykdydami šią komandą „NuGet“ paketų tvarkyklės konsolėje:

„Install-Package NETCore.MailKit“

Taip pat turėsite pridėti nuorodas į šias vardų sritis savo kode:

naudojant MailKit.Net.Smtp;

naudojant „MimeKit“;

ASP.NET Core nurodykite el. Pašto konfigūracijos metaduomenis

Šis kodo fragmentas rodo, kaip galite nurodyti el. Pašto konfigūracijos informaciją faile appsettings.json.

„NotificationMetadata“: {

„Siuntėjas“: „[email protected]“,

„SmtpServer“: „smtp.gmail.com“,

„Gavėjas“: „imtuvas_el.laiš[email protected]“,

„Uostas“: 465,

„Vartotojo vardas“: „[email protected]“,

„Slaptažodis“: „nurodykite savo slaptažodį čia“

  }

Norėdami perskaityti el. Pašto konfigūracijos duomenis, pasinaudosime šia klase.

viešoji klasė „NotificationMetadata“

    {

viešoji eilutė Siuntėjas {get; rinkinys; }

public string Reciever {get; rinkinys; }

viešoji eilutė „SmtpServer“ {get; rinkinys; }

public int Port {get; rinkinys; }

viešoji eilutė „UserName“ {get; rinkinys; }

viešoji eilutė Slaptažodis {get; rinkinys; }

    }

Štai kaip galite nuskaityti el. Pašto konfigūracijos duomenis iš failo „appsettings.json“ į „NotificationMetadata“ klasės egzempliorių.

public void „ConfigureServices“ („IServiceCollection“ paslaugos)

{

var pranešimo metaduomenys =

Configuration.GetSection („NotificationMetadata“).

Gauti ();

paslaugos.AddSingleton (pranešimo metaduomenys);

paslaugos.AddControllers ();

}

Sukurkite „EmailMessage“ klasės egzempliorių ASP.NET Core

Sukurkite naują klasę pavadinimu „EmailMessage“ su šiuo kodu:

viešosios klasės „EmailMessage“

    {

viešasis „MailboxAddress Sender“ {get; rinkinys; }

viešasis „MailboxAddress Reciever“ {get; rinkinys; }

viešoji eilutė Tema {get; rinkinys; }

viešosios eilutės turinys {get; rinkinys; }

    }

Sukurkite „MimeMessage“ klasės egzempliorių ASP.NET Core

Šis metodas parodo, kaip galite sukurti „MimeMessage“ egzempliorių iš mūsų pasirinktos klasės „EmailMessage“ egzemplioriaus.

privatus „MimeMessage“ „CreateMimeMessageFromEmailMessage“ („EmailMessage“ pranešimas)

{

var mimeMessage = new MimeMessage ();

mimeMessage.From.Add (message.Sender);

mimeMessage.To.Add (message.Reciever);

mimeMessage.Subject = message.Subject;

mimeMessage.Body = new TextPart („MimeKit.Text.TextFormat.Text“)

{Tekstas = žinutė.Turinys};

return mimeMessage;

}

Siųskite el. Laiškus sinchroniškai naudodamiesi „MailKit“, esančia ASP.NET Core

Norėdami išsiųsti el. Laišką, turime pasinaudoti „SmtpClient“ klasės pranašumais, susijusiais su „MailKit.Net.Smtp“ vardų sritimi. Šis kodo fragmentas parodo, kaip tai galima padaryti.

naudojant (SmtpClient smtpClient = naujas SmtpClient ())

{

smtpClient.Connect (_notificationMetadata.SmtpServer,

_notificationMetadata.Port, true);

smtpClient.Authenticate (_notificationMetadata.UserName,

_notificationMetadata.Password);

smtpClient.Send („mimeMessage“);

smtpClient.Donnonnect (tiesa);

}

Jūsų patogumui yra visas „DefaultController“ klasės „Get action“ metodo kodas.

viešoji eilutė Gauti ()

{

EmailMessage message = new EmailMessage ();

message.Sender = nauja „MailboxAddress“ („Self“, _notificationMetadata.Sender);

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

message.Subject = "Sveiki atvykę";

message.Content = "Sveikas pasauli!";

var mimeMessage = CreateEmailMessage (pranešimas);

naudojant (SmtpClient smtpClient = naujas SmtpClient ())

 {

smtpClient.Connect (_notificationMetadata.SmtpServer,

_notificationMetadata.Port, true);

smtpClient.Authenticate (_notificationMetadata.UserName,

_notificationMetadata.Password);

smtpClient.Send („mimeMessage“);

smtpClient.Donnonnect (tiesa);

  }

grąžinti „El. paštas sėkmingai išsiųstas“;

}

Siųskite el. Laiškus asinchroniškai naudodami „MailKit“ ASP.NET Core

Šis kodo fragmentas iliustruoja asinchroninę kodo versiją, kurią ką tik parašėme norėdami sinchroniškai siųsti el. Laiškus.

naudojant (SmtpClient smtpClient = naujas SmtpClient ())

 {

laukti smtpClient.ConnectAsync (_notificationMetadata.SmtpServer,

_notificationMetadata.Port, true);

laukti smtpClient.AuthenticateAsync (_notificationMetadata.UserName,

_notificationMetadata.Password);

laukti smtpClient.SendAsync („mimeMessage“);

laukti smtpClient.DisconnectAsync (true);

 }

Galiausiai atkreipkite dėmesį, kad „MailKit“ taip pat leidžia siųsti el. Laiškus naudojant šablonus ir net el. Laiškus su priedais. Parodysiu papildomas „MailKit“ savybes būsimame straipsnyje.