Ohjelmointi

Kuinka lähettää sähköposteja ASP.NET Core -sovelluksessa

Sinun on usein lähetettävä sähköposteja sovelluksesi kautta. Voit hyödyntää MailKit NuGet -pakettia sähköpostin lähettämiseen ASP.NET Core -sovelluksessa. MailKit on avoimen lähdekoodin sähköpostiohjelmakirjasto, jota voidaan käyttää .NET- tai .NET Core -sovelluksissa, jotka toimivat Windows-, Linux- tai Mac-järjestelmissä. Tässä artikkelissa käsitellään sitä, kuinka voimme käyttää MailKit NuGet -pakettia sähköpostien lähettämiseen ASP.NET Core -sovelluksessa.

Jotta voit työskennellä tässä artikkelissa annettujen koodiesimerkkien kanssa, järjestelmässäsi on oltava asennettuna Visual Studio 2019. Jos sinulla ei vielä ole kopiota, voit ladata Visual Studio 2019 täältä.

Luo ASP.NET Core API -projekti

Ensinnäkin, luodaan ASP.NET Core -projekti Visual Studiossa. Olettaen, että Visual Studio 2019 on asennettu järjestelmään, luo uusi ASP.NET Core -projekti Visual Studioon noudattamalla seuraavia ohjeita.

  1. Käynnistä Visual Studio IDE.
  2. Napsauta Luo uusi projekti.
  3. Valitse Luo uusi projekti -ikkunassa ”ASP.NET Core Web Application” näytetystä malliluettelosta.
  4. Napsauta Seuraava.
  5. Määritä seuraavan projektin nimi ja sijainti uuden Konfiguroi uusi projekti -ikkunassa.
  6. Napsauta Luo.
  7. Valitse Luo uusi ASP.Net Core -verkkosovellus -ikkunassa .NET Core ajonaikaiseksi ja ASP.NET Core 2.2 (tai uudempi) yläreunan avattavasta luettelosta. Käytän täällä ASP.NET Core 3.0: ta.
  8. Luo uusi ASP.NET Core API -sovellus valitsemalla projektimalliksi “API”.
  9. Varmista, että valintaruudut Ota Docker-tuki käyttöön ja Määritä HTTPS: lle ei ole valittu, koska emme käytä näitä ominaisuuksia täällä.
  10. Varmista, että todennukseksi on määritetty Ei todentamista, koska emme myöskään käytä todennusta.
  11. Napsauta Luo.

Tämä luo uuden ASP.NET Core API -projektin Visual Studioon. Valitse Ohjainten ratkaisukansio Solution Explorer -ikkunassa ja napsauta “Lisää -> Ohjain…” luodaksesi uuden ohjaimen nimeltä DefaultController. Käytämme tätä projektia tämän artikkelin seuraavissa osioissa.

Asenna MailKit NuGet -paketti

Jos haluat työskennellä MailKitin kanssa, sinun on asennettava MailKit-paketti NuGetistä. Voit tehdä tämän joko Visual Studio 2019 IDE: n sisällä olevan NuGet-paketinhallinnan kautta tai suorittamalla seuraavan komennon NuGet-paketinhallintakonsolissa:

Install-Package NETCore.MailKit

Sinun on myös lisättävä viitteitä seuraaviin nimitiloihin koodissasi:

MailKit.Net.Smtp: n avulla;

MimeKitin avulla;

Määritä sähköpostimääritysten metatiedot ASP.NET Core -sovelluksessa

Seuraava koodinpätkä osoittaa, kuinka voit määrittää sähköpostin määritystiedot appsettings.json-tiedostossa.

"NotificationMetadata": {

"Lähettäjä": "[email protected]",

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

"Vastaanottaja": "vastaanottaja_sähkö[email protected]",

"Satama": 465,

"Käyttäjätunnus": "[email protected]",

"Salasana": "määritä salasanasi tässä"

  }

Voit lukea sähköpostin määritystiedot hyödyntämällä seuraavaa luokkaa.

julkisen luokan NotificationMetadata

    {

julkinen merkkijono Lähettäjä {get; aseta; }

julkinen merkkijono Vastaanottaja {get; aseta; }

julkinen merkkijono SmtpServer {get; aseta; }

public int Port {get; aseta; }

public string Käyttäjänimi {get; aseta; }

public string Salasana {get; aseta; }

    }

Näin voit lukea sähköpostin määritystiedot appsettings.json-tiedostosta NotificationMetadata-luokan ilmentymään.

public void ConfigureServices (IServiceCollection-palvelut)

{

var notificationMetadata =

Configuration.GetSection ("NotificationMetadata").

Saada();

palvelut.AddSingleton (notificationMetadata);

palvelut.AddControllers ();

}

Luo EmailMessage-luokan ilmentymä ASP.NET Core -sovelluksessa

Luo uusi luokka nimeltä EmailMessage seuraavalla koodilla:

julkisen luokan EmailMessage

    {

julkinen postilaatikon osoitteen lähettäjä {get; aseta; }

julkinen MailboxAddress Reciever {get; aseta; }

public string Aihe {get; aseta; }

julkinen merkkijono Sisältö {get; aseta; }

    }

Luo MimeMessage-luokan ilmentymä ASP.NET Core -sovelluksessa

Seuraava menetelmä kuvaa, kuinka voit luoda MimeMessage-ilmentymän mukautetun luokan EmailMessage-instanssista.

yksityinen MimeMessage CreateMimeMessageFromEmailMessage (EmailMessage-viesti)

{

var mimeMessage = uusi MimeMessage ();

mimeMessage.From.Add (message.Sender);

mimeMessage.To.Add (viesti.Vastaanottaja);

mimeMessage.Subject = viesti.Subject;

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

{Teksti = viesti.Sisältö};

return mimeMessage;

}

Lähetä sähköpostia synkronisesti MailKitin avulla ASP.NET Core -sovelluksessa

Sähköpostin lähettämiseksi meidän on hyödynnettävä MailKit.Net.Smtp-nimiavaruuteen liittyvää SmtpClient-luokkaa. Seuraava koodinpätkä kuvaa, miten tämä voidaan tehdä.

käyttäen (SmtpClient smtpClient = uusi SmtpClient ())

{

smtpClient.Connect (_notificationMetadata.SmtpServer,

_notificationMetadata.Port, true);

smtpClient.Authenticate (_notificationMetadata.UserName,

_notificationMetadata.Password);

smtpClient.Send (mimeMessage);

smtpClient.Donnonnect (true);

}

Tässä on DefaultController-luokan Get action -menetelmän täydellinen koodi avuksesi.

julkinen merkkijono Get ()

{

EmailMessage message = uusi EmailMessage ();

message.Sender = uusi postilaatikon osoite ("Itse", _notificationMetadata.Sender);

message.Reciever = uusi postilaatikon osoite ("Itse", _notificationMetadata.Reciever);

message.Subject = "Tervetuloa";

message.Content = "Hei maailma!";

var mimeMessage = CreateEmailMessage (viesti);

käyttäen (SmtpClient smtpClient = uusi SmtpClient ())

 {

smtpClient.Connect (_notificationMetadata.SmtpServer,

_notificationMetadata.Port, true);

smtpClient.Authenticate (_notificationMetadata.UserName,

_notificationMetadata.Password);

smtpClient.Send (mimeMessage);

smtpClient.Donnonnect (true);

  }

palauta "Sähköpostin lähetys onnistui";

}

Lähetä sähköpostia asynkronisesti ASK.NET Core -sovelluksen MailKitin avulla

Seuraava koodinpätkä kuvaa asynkronisen version koodista, jonka kirjoitimme juuri lähettämään sähköposteja synkronisesti.

käyttäen (SmtpClient smtpClient = uusi SmtpClient ())

 {

odota smtpClient.ConnectAsync (_notificationMetadata.SmtpServer,

_notificationMetadata.Port, true);

odota smtpClient.AuthenticateAsync (_notificationMetadata.UserName,

_notificationMetadata.Password);

odota smtpClient.SendAsync (mimeMessage);

odota smtpClient.DisconnectAsync (true);

 }

Lopuksi, huomaa, että MailKitin avulla voit myös lähettää sähköposteja käyttämällä malleja ja jopa sähköposteja, joissa on liitteitä. Esittelen MailKitin lisäominaisuudet tässä tulevassa artikkelissa.

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