[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.
У цій статті ми розглянемо процес надсилання Email в Asp.Net Core додатку. Для надсилання email ми будемо використовувати бібліотеку поштового клієнта MailKit.
Я очікую від вас знання концепцій об’єктно-орієнтованого програмування на C#. Я припускаю, що ви також знаєте концепції .NET Core, особливо патерн MVC.
Надсилання Email в Asp.Net Core
Щоб писати разом зі мною, вам доведеться встановити .NET Core 2.2, а також Visual Studio 2017-2022. Ви також можете використовувати іншу IDE замість Visual Studio.
Створення проекту
Відкрийте Visual Studio 2022. Створіть проєкт “Asp.Net Core Web Application (.Net Core)” із шаблоном MVC. Ви можете назвати цей проєкт як завгодно.
Тепер ми встановимо залежності, якщо вони ще не встановлені у вашій IDE:
- MailKit
- MimeKit
Після встановлення бібліотеки Mailkit перейдемо до контролера HomeController, щоб реалізувати поштову функціональність.
Надсилання листа
Для надсилання листа в Asp.Net Core ми можемо обійтися тільки діями та поданнями. У контролері HomeController додамо дію Email, з таким вмістом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
[HttpGet] public IActionResult Email() { var message = new MimeMessage(); //от кого отправляем и заголовок message.From.Add(new MailboxAddress("Test Project", "mail@gmail.com")); //кому отправляем message.To.Add(new MailboxAddress("Tom", "enykoruna4@rambler.ru")); //тема письма message.Subject = "Тестовое письмо для приятеля!"; //тело письма message.Body = new TextPart("plain") { Text = "Доброго времени суток. Если вы получили это письмо, значит у меня все хорошо.", }; using (var client = new SmtpClient()) { //Указываем smtp сервер почты и порт client.Connect("smtp.gmail.com", 587, false); //Указываем свой Email адрес и пароль приложения client.Authenticate("mail@gmail.com", "password"); client.Send(message); client.Disconnect(true); } return View(); } |
Не забудьте вгорі файлу підключити необхідні простори імен:
- using MimeKit;
- using MailKit.Net.Smtp;
Замість FromEmail@rambler.ru, вкажіть свою е-мейл адресу, так само додайте ваш пароль від електронної пошти.
З травня 2022 року компанія Google припинила підтримку зовнішніх пристроїв, на пряму.
Для надсилання листа необхідно отримати “пароль додатка“, або ж використовувати будь-який інший smtp клієнт, наприклад – Rambler.
Розглянемо, як отримати пароль додатка, для надсилання листа через Google Smtp.
- Відкрийте сторінкуАккаунт Google: https://myaccount.google.com/
- Натисніть Безпека.
- У розділі “Вхід в обліковий запис Google” виберіть Паролі додатків. За необхідності виконайте вхід (цей параметр недоступний, якщо двоетапна автентифікація не налаштована для вашого акаунта).
- У нижній частині сторінки натисніть Додаток і виберіть потрібний варіант потім натисніть Пристрій і вкажіть модель потім – Створити.
- Тепер збережіть згенерований пароль у файл або одразу додайте в код застосунку:
1 |
client.Authenticate("mail@gmail.com", "egweflcsvbxgnffd"); |
Створимо подання, переходимо в папку Views – Home – Add View – Email.cshtml:
Вміст подання достатньо простий:
1 |
<h1>Email успешно отправлен!</h1> |
Тепер запустимо додаток, перейдемо за такою адресою:
https://localhost:XXXX/Home/Email
де XXXX – це номер порту. Після виконання перевіримо пошту одержувача.
Отже, ми успішно надіслали лист, тепер надсилання Email в Asp.Net Core додатках здається не таким важким завданням.
Надсилання листа з вкладенням
Якщо ви хочете надіслати лист із вкладенням, просто додайте такий код у HomeController:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
[HttpGet] public IActionResult EmailAttachment() { var message = new MimeMessage(); //от кого отправляем и заголовок message.From.Add(new MailboxAddress("Test Project", "mail@gmail.com")); //кому отправляем message.To.Add(new MailboxAddress("Tom", "enykoruna4@rambler.ru")); //тема письма message.Subject = "Тестовое письмо для приятеля!"; //тело письма message.Body = new TextPart("plain") { Text = "Доброго времени суток. Если вы получили это письмо, значит у меня все хорошо.", }; //добавление вложения MemoryStream memoryStream = new MemoryStream(); BodyBuilder bb = new BodyBuilder(); using (var wc = new WebClient()) { bb.Attachments.Add("Email.pdf", wc.DownloadData("wwwroot/pdf-test.pdf")); } message.Body = bb.ToMessageBody(); //конец добавления вложения using (var client = new SmtpClient()) { //Указываем smtp сервер почты и порт client.Connect("smtp.gmail.com", 587, false); //Указываем свой Email адрес и пароль приложения client.Authenticate("mail@gmail.com", "egweflcsvbxgnffd"); client.Send(message); client.Disconnect(true); } return View("Email"); } |
Коротенько розглянемо вищенаведений код. Тут я використовував дію – EmailAttachment, у HomeController, для надсилання пошти з вкладенням у вигляді файлу pdf формату (це може бути будь-який інший файл). Переконайтеся, що в папці wwwroot є файл для надсилання:
Тепер запустимо додаток, перейдемо за такою адресою:
https://localhost:XXXX/Home/EmailAttachment
де XXXX – це номер порту. Після успішного виконання перевірте пошту, результат надсилання листа має приблизний вигляд:
Ви програміст-початківець, який хоче вивчити всі тонкощі мови C#?
Пройдіть наш тест на 13 запитань, щоб дізнатися, як багато ви знаєте насправді!
C# Braincheck |
Отже, ви успішно надіслали лист із вкладенням. Сподіваюся, вам сподобалася ця стаття. Ви можете завантажити вихідний код у моєму сховищі – Github.
Поділіться вашим досвідом у коментарях, як ви виконуєте надсилання Email в Asp.Net Core додатках?
Так само вам може бути цікава попередня стаття:
Ви хочете навчитися писати код мовою програмування C#?
Створювати різні інформаційні системи, що складаються з сайтів, мобільних клієнтів, десктопних додатків, телеграм-ботів тощо.
Переходьте до нас на сторінку Dijix і ознайомтеся з умовами навчання, ми спеціалізуємося тільки на індивідуальних заняттях, як для початківців, так і для просунутих програмістів. Ви можете взяти як одне заняття для опрацювання питання, що вас цікавить, так і кілька, для більш щільної роботи. Завдяки особистому кабінету, кожен студент підвищить якість свого навчання, у вашому розпорядженні:
- Доступ до пройденого матеріалу
- Тематичні статті
- Бібліотека книг
- Онлайн тестування
- Спілкування в закритих групах