Προγραμματισμός

Πώς να στείλετε email στο ASP.NET Core

Συχνά θα έχετε την ανάγκη να στείλετε email μέσω της αίτησής σας. Μπορείτε να επωφεληθείτε από το πακέτο MailKit NuGet για να στείλετε μηνύματα ηλεκτρονικού ταχυδρομείου στο ASP.NET Core. Το MailKit είναι μια βιβλιοθήκη πελάτη αλληλογραφίας ανοιχτού κώδικα που μπορεί να χρησιμοποιηθεί σε εφαρμογές .NET ή .NET Core που εκτελούνται σε συστήματα Windows, Linux ή Mac. Αυτό το άρθρο παρουσιάζει μια συζήτηση για το πώς μπορούμε να χρησιμοποιήσουμε το πακέτο MailKit NuGet για την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου στο ASP.NET Core.

Για να εργαστείτε με τα παραδείγματα κώδικα που παρέχονται σε αυτό το άρθρο, θα πρέπει να έχετε εγκαταστήσει το Visual Studio 2019 στο σύστημά σας. Εάν δεν έχετε ήδη αντίγραφο, μπορείτε να κατεβάσετε το Visual Studio 2019 εδώ.

Δημιουργήστε ένα έργο ASP.NET Core API

Πρώτα απ 'όλα, ας δημιουργήσουμε ένα έργο ASP.NET Core στο Visual Studio. Ας υποθέσουμε ότι το Visual Studio 2019 είναι εγκατεστημένο στο σύστημά σας, ακολουθήστε τα βήματα που περιγράφονται παρακάτω για να δημιουργήσετε ένα νέο έργο ASP.NET Core στο Visual Studio.

  1. Εκκινήστε το Visual Studio IDE.
  2. Κάντε κλικ στο "Δημιουργία νέου έργου".
  3. Στο παράθυρο "Δημιουργία νέου έργου", επιλέξτε "ASP.NET Core Web Application" από τη λίστα των προτύπων που εμφανίζονται.
  4. Κάντε κλικ στο Επόμενο.
  5. Στο παράθυρο "Διαμόρφωση του νέου έργου" που εμφανίζεται στη συνέχεια, καθορίστε το όνομα και την τοποθεσία για το νέο έργο.
  6. Κάντε κλικ στο Δημιουργία.
  7. Στο παράθυρο "Δημιουργία νέας εφαρμογής Web ASP.Net Core", επιλέξτε .NET Core ως χρόνο εκτέλεσης και ASP.NET Core 2.2 (ή μεταγενέστερη έκδοση) από την αναπτυσσόμενη λίστα στην κορυφή. Θα χρησιμοποιήσω το ASP.NET Core 3.0 εδώ.
  8. Επιλέξτε "API" ως πρότυπο έργου για να δημιουργήσετε μια νέα εφαρμογή ASP.NET Core API.
  9. Βεβαιωθείτε ότι τα πλαίσια ελέγχου "Ενεργοποίηση υποστήριξης Docker" και "Διαμόρφωση για HTTPS" δεν είναι επιλεγμένα, καθώς δεν θα χρησιμοποιούμε αυτές τις δυνατότητες εδώ.
  10. Βεβαιωθείτε ότι ο Έλεγχος ταυτότητας έχει οριστεί ως "Χωρίς έλεγχο ταυτότητας", καθώς ούτε θα χρησιμοποιούμε έλεγχο ταυτότητας.
  11. Κάντε κλικ στο Δημιουργία.

Αυτό θα δημιουργήσει ένα νέο έργο ASP.NET Core API στο Visual Studio. Επιλέξτε το φάκελο Controllers solution στο παράθυρο Solution Explorer και κάντε κλικ στο "Add -> Controller ..." για να δημιουργήσετε ένα νέο χειριστήριο με το όνομα DefaultController. Θα χρησιμοποιήσουμε αυτό το έργο στις επόμενες ενότητες αυτού του άρθρου.

Εγκαταστήστε το πακέτο MailKit NuGet

Για να εργαστείτε με το MailKit, πρέπει να εγκαταστήσετε το πακέτο MailKit από το NuGet. Μπορείτε να το κάνετε είτε μέσω του διαχειριστή πακέτων NuGet στο Visual Studio 2019 IDE είτε εκτελώντας την ακόλουθη εντολή στην κονσόλα διαχειριστή πακέτων NuGet:

Εγκατάσταση-πακέτου NETCore.MailKit

Θα χρειαστεί επίσης να προσθέσετε αναφορές στους ακόλουθους χώρους ονομάτων στον κώδικά σας:

χρησιμοποιώντας MailKit.Net.Smtp;

χρησιμοποιώντας το MimeKit;

Καθορίστε μεταδεδομένα διαμόρφωσης email στον πυρήνα ASP.NET

Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να καθορίσετε τις λεπτομέρειες διαμόρφωσης email στο αρχείο appsettings.json.

"NotificationMetadata": {

"Αποστολέας": "[email protected]",

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

"Reciever": "[email protected]",

"Λιμάνι": 465,

"Όνομα χρήστη": "[email protected]",

"Κωδικός πρόσβασης": "προσδιορίστε τον κωδικό πρόσβασής σας εδώ"

  }

Για να διαβάσετε τα δεδομένα διαμόρφωσης email, θα εκμεταλλευτούμε την ακόλουθη τάξη.

δημόσια τάξη NotificationMetadata

    {

δημόσια συμβολοσειρά Sender {get; σειρά; }

δημόσια συμβολοσειρά Reciever {get; σειρά; }

δημόσια συμβολοσειρά SmtpServer {get; σειρά; }

δημόσια int Port {get; σειρά; }

δημόσια συμβολοσειρά UserName {get; σειρά; }

δημόσιος κωδικός πρόσβασης κωδικού πρόσβασης {get; σειρά; }

    }

Δείτε πώς μπορείτε να διαβάσετε τα δεδομένα διαμόρφωσης email από το αρχείο appsettings.json σε μια παρουσία της κλάσης NotificationMetadata.

public void ConfigureServices (υπηρεσίες IServiceCollection)

{

var notificationMetadata =

Configuration.GetSection ("NotificationMetadata").

Παίρνω();

υπηρεσίες.AddSingleton (notificationMetadata);

υπηρεσίες.AddControllers ();

}

Δημιουργήστε μια παρουσία της κλάσης EmailMessage στο ASP.NET Core

Δημιουργήστε μια νέα τάξη με το όνομα EmailMessage με τον ακόλουθο κωδικό:

δημόσια τάξη EmailMessage

    {

δημόσιο MailboxAddress Sender {get; σειρά; }

Δημόσιο MailboxAddress Reciever {get; σειρά; }

δημόσια συμβολοσειρά Θέμα {get; σειρά; }

δημόσια συμβολοσειρά Περιεχόμενο {get; σειρά; }

    }

Δημιουργήστε μια παρουσία της κλάσης MimeMessage στο ASP.NET Core

Η ακόλουθη μέθοδος δείχνει πώς μπορείτε να δημιουργήσετε μια παρουσία MimeMessage από μια παρουσία της προσαρμοσμένης κλάσης EmailMessage.

ιδιωτικό MimeMessage CreateMimeMessageFromEmailMessage (μήνυμα EmailMessage)

{

var mimeMessage = νέο MimeMessage ();

mimeMessage.From.Add (message.Sender);

mimeMessage.To.Add (message.Reciever);

mimeMessage.Subject = message.Subject;

mimeMessage.Body = νέο TextPart (MimeKit.Text.TextFormat.Text)

{Text = message.Content};

επιστροφή mimeMessage;

}

Στείλτε email ταυτόχρονα χρησιμοποιώντας το MailKit στο ASP.NET Core

Για να στείλουμε ένα email, πρέπει να εκμεταλλευτούμε την κλάση SmtpClient που σχετίζεται με το χώρο ονομάτων MailKit.Net.Smtp. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορεί να γίνει αυτό.

χρησιμοποιώντας (SmtpClient smtpClient = νέο SmtpClient ())

{

smtpClient.Connect (_notificationMetadata.SmtpServer,

_notificationMetadata.Port, true);

smtpClient.Authenticate (_notificationMetadata.UserName,

_notificationMetadata.Password);

smtpClient.Send (mimeMessage);

smtpClient.Disconnect (true);

}

Εδώ είναι ο πλήρης κωδικός της μεθόδου Λήψη δράσης της κλάσης DefaultController για την εξυπηρέτησή σας

δημόσια συμβολοσειρά Λήψη ()

{

EmailMessage message = νέο EmailMessage ();

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

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

message.Subject = "Καλώς ήλθατε";

message.Content = "Γεια σου Κόσμος!";

var mimeMessage = CreateEmailMessage (μήνυμα);

χρησιμοποιώντας (SmtpClient smtpClient = νέο SmtpClient ())

 {

smtpClient.Connect (_notificationMetadata.SmtpServer,

_notificationMetadata.Port, true);

smtpClient.Authenticate (_notificationMetadata.UserName,

_notificationMetadata.Password);

smtpClient.Send (mimeMessage);

smtpClient.Disconnect (true);

  }

επιστροφή "Το ηλεκτρονικό ταχυδρομείο στάλθηκε με επιτυχία"

}

Στείλτε emails ασύγχρονα χρησιμοποιώντας το MailKit στο ASP.NET Core

Το ακόλουθο απόσπασμα κώδικα απεικονίζει μια ασύγχρονη έκδοση του κώδικα που μόλις γράψαμε για να στείλουμε email ταυτόχρονα.

χρησιμοποιώντας (SmtpClient smtpClient = νέο SmtpClient ())

 {

περιμένετε smtpClient.ConnectAsync (_notificationMetadata.SmtpServer,

_notificationMetadata.Port, true);

περιμένετε smtpClient.AuthenticateAsync (_notificationMetadata.UserName,

_notificationMetadata.Password);

περιμένετε smtpClient.SendAsync (mimeMessage);

περιμένετε smtpClient.DisconnectAsync (true);

 }

Τέλος, σημειώστε ότι το MailKit σάς επιτρέπει επίσης να στέλνετε μηνύματα ηλεκτρονικού ταχυδρομείου χρησιμοποιώντας πρότυπα και ακόμη και μηνύματα ηλεκτρονικού ταχυδρομείου με συνημμένα. Θα δείξω τις πρόσθετες δυνατότητες του MailKit σε ένα μελλοντικό άρθρο εδώ.

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