Programmēšana

Kā nosūtīt e-pastus ASP.NET Core

Izmantojot lietojumprogrammu, jums bieži būs jāsūta e-pasta ziņojumi. Varat izmantot MailKit NuGet pakotnes priekšrocības, lai nosūtītu e-pastus ASP.NET Core. MailKit ir atvērtā koda pasta klienta bibliotēka, kuru var izmantot .NET vai .NET Core lietojumprogrammās, kas darbojas Windows, Linux vai Mac sistēmās. Šajā rakstā ir sniegta diskusija par to, kā mēs varam izmantot MailKit NuGet pakotni, lai nosūtītu e-pastus ASP.NET Core.

Lai strādātu ar šajā rakstā sniegtajiem kodu piemēriem, sistēmā jābūt instalētai Visual Studio 2019. Ja jums vēl nav kopijas, varat lejupielādēt Visual Studio 2019 šeit.

Izveidojiet ASP.NET Core API projektu

Vispirms izveidosim ASP.NET Core projektu Visual Studio. Pieņemot, ka Visual Studio 2019 ir instalēta jūsu sistēmā, veiciet tālāk norādītās darbības, lai izveidotu jaunu ASP.NET Core projektu Visual Studio.

  1. Palaidiet Visual Studio IDE.
  2. Noklikšķiniet uz “Izveidot jaunu projektu”.
  3. Logā “Izveidot jaunu projektu” parādīto veidņu sarakstā atlasiet “ASP.NET Core Web Application”.
  4. Noklikšķiniet uz Tālāk.
  5. Nākamajā logā “Konfigurēt jauno projektu” norādiet jaunā projekta nosaukumu un vietu.
  6. Noklikšķiniet uz Izveidot.
  7. Logā “Izveidot jaunu ASP.Net Core tīmekļa lietojumprogrammu” augšpusē esošajā nolaižamajā sarakstā atlasiet .NET Core kā izpildlaiku un ASP.NET Core 2.2 (vai jaunāku). Es šeit izmantošu ASP.NET Core 3.0.
  8. Atlasiet “API” kā projekta veidni, lai izveidotu jaunu ASP.NET Core API lietojumprogrammu.
  9. Pārliecinieties, vai nav atzīmētas izvēles rūtiņas “Iespējot Docker atbalstu” un “Konfigurēt HTTPS”, jo mēs šeit neizmantosim šīs funkcijas.
  10. Pārliecinieties, ka autentifikācija ir iestatīta kā “Nav autentifikācijas”, jo mēs arī neizmantosim autentifikāciju.
  11. Noklikšķiniet uz Izveidot.

Tādējādi Visual Studio tiks izveidots jauns ASP.NET Core API projekts. Logā Solution Explorer atlasiet Controllers solution mapi un noklikšķiniet uz “Add -> Controller…”, lai izveidotu jaunu kontrolleri ar nosaukumu DefaultController. Mēs izmantosim šo projektu šī raksta nākamajās sadaļās.

Instalējiet MailKit NuGet pakotni

Lai strādātu ar MailKit, jums jāinstalē MailKit pakotne no NuGet. To var izdarīt, izmantojot NuGet pakotņu pārvaldnieku Visual Studio 2019 IDE, vai arī izpildot šādu komandu NuGet pakotņu pārvaldnieka konsolē:

Instalācijas pakete NETCore.MailKit

Kodā būs jāpievieno arī atsauces uz šādām nosaukumvietām:

izmantojot MailKit.Net.Smtp;

izmantojot MimeKit;

Norādiet e-pasta konfigurācijas metadatus ASP.NET Core

Šis koda fragments parāda, kā jūs varat norādīt e-pasta konfigurācijas informāciju failā appsettings.json.

"NotificationMetadata": {

"Sūtītājs": "[email protected]",

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

"Saņēmējs": "saņēmē[email protected]",

"Osta": 465,

"Lietotājvārds": "[email protected]",

"Parole": "šeit norādiet savu paroli"

  }

Lai lasītu e-pasta konfigurācijas datus, mēs izmantosim šādas klases priekšrocības.

publiskā klase NotificationMetadata

    {

publiska virkne Sūtītājs {get; komplekts; }

public string Reciever {get; komplekts; }

publiskā virkne SmtpServer {get; komplekts; }

public int Port {get; komplekts; }

publiskā virkne UserName {get; komplekts; }

public string Parole {get; komplekts; }

    }

Lūk, kā jūs varat nolasīt e-pasta konfigurācijas datus no faila appsettings.json NotificationMetadata klases instancē.

public void ConfigureServices (IServiceCollection pakalpojumi)

{

var paziņojumsMetadati =

Configuration.GetSection ("NotificationMetadata").

Gūt();

pakalpojumi.AddSingleton (notificationMetadata);

pakalpojumi.AddControllers ();

}

ASP.NET Core izveidojiet klases EmailMessage instanci

Izveidojiet jaunu klasi ar nosaukumu EmailMessage ar šādu kodu:

publiskā klase EmailMessage

    {

publiskais pastkastes adreses sūtītājs {get; komplekts; }

publiskā MailboxAddress Reciever {get; komplekts; }

publiska virkne Subject {get; komplekts; }

public string Saturs {get; komplekts; }

    }

ASP.NET Core izveidojiet klases MimeMessage instanci

Šī metode parāda, kā jūs varat izveidot MimeMessage gadījumu no mūsu pielāgotās klases EmailMessage instances.

privāts MimeMessage CreateMimeMessageFromEmailMessage (EmailMessage ziņojums)

{

var mimeMessage = jauns MimeMessage ();

mimeMessage.From.Add (message.Sender);

mimeMessage.To.Add (message.Reciever);

mimeMessage.Subject = message.Subject;

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

{Teksts = message.Content};

atgriezties mimeMessage;

}

Sūtiet e-pastus sinhroni, izmantojot MailKit programmā ASP.NET Core

Lai izsūtītu e-pastu, mums jāizmanto SmtpClient klases priekšrocības, kas attiecas uz MailKit.Net.Smtp vārdu vietu. Šis koda fragments parāda, kā to var izdarīt.

izmantojot (SmtpClient smtpClient = jauns SmtpClient ())

{

smtpClient.Connect (_notificationMetadata.SmtpServer,

_notificationMetadata.Port, patiess);

smtpClient.Authenticate (_notificationMetadata.UserName,

_notificationMetadata.Password);

smtpClient.Send (mimeMessage);

smtpClient.Donnonnect (true);

}

Jūsu ērtībai šeit ir pilns mūsu DefaultController klases Get action metodes kods.

publiskā virkne Get ()

{

EmailMessage message = new EmailMessage ();

message.Sender = jauna pastkastes adrese ("Self", _notificationMetadata.Sender);

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

message.Subject = "Laipni lūdzam";

message.Content = "Sveika pasaule!";

var mimeMessage = CreateEmailMessage (ziņojums);

izmantojot (SmtpClient smtpClient = jauns SmtpClient ())

 {

smtpClient.Connect (_notificationMetadata.SmtpServer,

_notificationMetadata.Port, patiess);

smtpClient.Authenticate (_notificationMetadata.UserName,

_notificationMetadata.Password);

smtpClient.Send (mimeMessage);

smtpClient.Disconnect (true);

  }

atgriezt "E-pasts veiksmīgi nosūtīts";

}

Sūtiet e-pastus asinhroni, izmantojot MailKit programmā ASP.NET Core

Šis koda fragments ilustrē tā koda asinhrono versiju, kuru tikko rakstījām, lai sinhroni nosūtītu e-pastus.

izmantojot (SmtpClient smtpClient = jauns SmtpClient ())

 {

gaidiet smtpClient.ConnectAsync (_notificationMetadata.SmtpServer,

_notificationMetadata.Port, patiess);

gaida smtpClient.AuthenticateAsync (_notificationMetadata.UserName,

_notificationMetadata.Password);

gaidiet smtpClient.SendAsync (mimeMessage);

pagaidiet smtpClient.DisconnectAsync (true);

 }

Visbeidzot, ņemiet vērā, ka MailKit ļauj arī nosūtīt e-pastus, izmantojot veidnes un pat e-pastus, kuriem ir pielikumi. Turpmākajā rakstā es parādīšu MailKit papildu iespējas.

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