- PVSM.RU - https://www.pvsm.ru -
В этой статье я бы хотел рассказать, как настроить отправку почты со своей личной почты, используя яндекс и Spring boot. Видел много статей по настройке smtp сервера на Spring boot, но без связки с яндексом. А это ключевой момент, так как найти бесплатные smtp сервера не так то просто.
Для начала, нам понадобится почта яндекс. После смотрим, какие конфиги нам нужны тут [1]. Яндекс предлагает создать пароль для нашего приложения. Что мы и делаем по ссылке [2]. При создании пароля, копируем его себе, так как виден он только первый раз.
По сути, с яндексом мы закончили.
Переходим в наш проект. Я предполагаю что у вас уже настроен Spring boot. Так что нужно добавить зависимость для почты. Я использую Gradle, так что у меня это выглядит так:
implementation("org.springframework.boot:spring-boot-starter-mail:3.1.5")
Помимо этого, нужно будет добавить конфиги в файл application.properties.
#email
spring.mail.host=smtp.yandex.ru
spring.mail.port=465
spring.mail.protocol=smtps
spring.mail.username=яндекс_логин
spring.mail.password=яндекс_пароль
mail.debug=false - #опционально, можно выключать если не нужно
Далее нам нужно вручную создать имплементацию класса JavaMailSender. В нем мы укажем все конфиги для нашей почты.
import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.mail.javamail.JavaMailSender
import org.springframework.mail.javamail.JavaMailSenderImpl
@Configuration
class MailConfig {
@Value("${spring.mail.host}")
private val host: String? = null
@Value("${spring.mail.username}")
private val username: String? = null
@Value("${spring.mail.password}")
private val password: String? = null
@Value("${spring.mail.port}")
private val port: Int = 0
@Value("${spring.mail.protocol}")
private val protocol: String? = null
@Value("${mail.debug}")
private val debug: String? = null
@Bean
fun getMailSender(): JavaMailSender {
val mailSender = JavaMailSenderImpl()
mailSender.host = host
mailSender.port = port
mailSender.username = username
mailSender.password = password
val properties = mailSender.javaMailProperties
properties.setProperty("mail.transport.protocol", protocol)
properties.setProperty("mail.debug", debug)
return mailSender
}
}
С помощью аннотации @Value [3] мы поттягиваем данные из конфигов. И в Котлине это выглядит немного по уродски, но выхода нет. Либо забивать конфиги вручную, а мы можем захотеть изменить их в зависимости от среды.
И класс, задача которого будет — отправлять письма. Назовем его MailSender.
import org.springframework.beans.factory.annotation.Value
import org.springframework.mail.SimpleMailMessage
import org.springframework.mail.javamail.JavaMailSender
import org.springframework.stereotype.Service
@Service
class MailSender(
private val mailSender: JavaMailSender
) {
@Value("${spring.mail.username}")
private val username: String? = null
fun send(emailTo: String, subject: String, message: String) {
val mailMessage = SimpleMailMessage()
mailMessage.from = username
mailMessage.setTo(emailTo)
mailMessage.subject = subject
mailMessage.text = message
mailSender.send(mailMessage)
}
}
Вот и все. Такими нехитрыми действиями мы создали класс, который может отправлять почту пользователям от нашего имени. Это бесплатно, просто и эффективно. Можем успешно решать такие задачи, как оповещения по почте, или подтверждение почты пользователей.
Спасибо что дочитали. Надеюсь было полезно.
Автор: andreworkfor
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/kotlin/393227
Ссылки в тексте:
[1] тут: https://yandex.ru/support/mail/mail-clients/others.html
[2] ссылке: https://id.yandex.ru/security/app-passwords
[3] @Value: https://www.pvsm.ru/users/Value
[4] Источник: https://habr.com/ru/articles/835222/?utm_source=habrahabr&utm_medium=rss&utm_campaign=835222
Нажмите здесь для печати.