[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на 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 – это номер порта. После успешного выполнения, проверьте почту, результат отправки письма, выглядит примерным образом:
Итак, вы успешно отправили письмо с вложением. Надеюсь, вам понравилась эта статья. Вы можете скачать исходный код в моем репозитории — Github.
Поделитесь вашим опытом в комментариях, как вы выполняете отправку Email в Asp.Net Core приложениях?
Так же вам может быть интересна предыдущая статья — Google Авторизация c Identity.
Вы начинающий программист, который хочет изучить все тонкости языка C#?
Пройдите наш тест на 13 вопросов, чтобы узнать, как много вы знаете на самом деле!
C# Braincheck |
Вы хотите научится писать код на языке программирования C#?
Создавать различные информационные системы, состоящие из сайтов, мобильных клиентов, десктопных приложений, телеграмм-ботов и т.д.
Переходите к нам на страницу Dijix и ознакомьтесь с условиями обучения, мы специализируемся только на индивидуальных занятиях, как для начинающих, так и для более продвинутых программистов. Вы можете взять как одно занятие для проработки интересующего Вас вопроса, так и несколько, для более плотной работы. Благодаря личному кабинету, каждый студент повысит качество своего обучения, в вашем распоряжении:
- Доступ к пройденному материалу
- Тематические статьи
- Библиотека книг
- Онлайн тестирование
- Общение в закрытых группах
Живи в своем мире, программируй в нашем.