Создаю онлайн-сервис для чтения книг. День 5. Подтверждение почты
🎁 Бонусная статья.
🛠️ Добавлю новую таблицу в БД
Создам таблицу, которая будет хранить коды подтверждения. В ней будут следующие столбцы:
id: уникальный идентификатор
code: сгенерированный код
email: почта, на которую пришел код
expires_in: дата и время истечения кода
🖥️ Создам интерфейс и реализую его
Опишу методы работы с этой базой данных через интерфейс.
🔐 Интерфейс сервиса аутентификации
В интерфейс добавлю логику для отправки кода на почту.
Отправляться будет шестизначный код. Генерация кода выглядит так:
📧 Настройка почты
Теперь зайду в mail.ru и создам новую почту. Перейду в настройки безопасности и выберу пункт "Пароли для внешних приложений" . Создам новое внешнее приложение и получу для него пароль. Запишу его себе куда-нибудь.
📦 Подключаю библиотеку System.Net.Mail
Для отправки сообщений необходимо подключить библиотеку System.Net.Mail. Она поможет настроить SMTP-клиент и отправить письмо.
🎯 Генерация кода и запись в БД
1. Параметры SMTP-сервера
Эти переменные необходимы для настройки подключения к SMTP-серверу, который будет отправлять письмо.
smtpServer
Описание : Адрес SMTP-сервера, который используется для отправки писем.
Пример :
Для Gmail: smtp.gmail.com
Для Mail.ru: smtp.mail.ru
Для Yandex: smtp.yandex.ru
smtpPort
Описание : Порт, используемый для подключения к SMTP-серверу. Обычно это:
587 (для TLS/STARTTLS)
465 (для SSL)
Пример : 587 для Gmail или Mail.ru.
smtpUsername
Описание : Логин (обычно email), который используется для аутентификации на SMTP-сервере.
smtpPassword
Описание : Пароль для аутентификации на SMTP-сервере. В моем случае я вписал пароль, который недавно получил от mail.ru.
2. Параметры объекта MailMessage
Класс MailMessage используется для создания самого письма. Вот его основные параметры:
IsBodyHtml = true
Описание : Этот флаг указывает, что тело письма содержит HTML-разметку. Если установлено значение false, то тело письма будет обрабатываться как простой текст.
From
Описание : Указывает адрес отправителя. Это поле должно быть заполнено объектом типа MailAddress.
To
Описание : Указывает адрес получателя. Можно добавить несколько адресов с помощью метода message.To.Add().
Subject
Описание : Тема письма, которая отображается в заголовке сообщения.
Body
Описание : Тело письма. Если IsBodyHtml = true, то здесь можно использовать HTML-разметку. В противном случае это будет простой текст. В моем случае я сверстал небольшую форму, записал её в отдельную переменную класса Constaints.
🌐 Добавляю эндпоинт
Создам эндпоинт, который будет отвечать за отправку сообщения. Например:
🧪 Тестирую!
Запускаю сервер и тестирую функционал:
Ввожу адрес электронной почты, на который хочу отправить сообщение. 📝
Нажимаю "Выполнить". ✅
И... Письмо пришло! 🎉
🗄️ Проверяю БД
Убеждаюсь, что запись добавлена в базу данных. Все отлично работает! ✅
🎉 Итог
Теперь пользователи могут подтвердить свою почту с помощью шестизначного кода.