Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktSpMlInr 269 of 299 menu
◀ ▶

Введение в почту в Kotlin

Электронное письмо связывает отправителя и адресата через сеть. У сообщения есть тема - краткая строка в списке входящих, и тело - основной текст или вложенные части. Передачу от клиента к серверу выполняет протокол SMTP: программа открывает соединение, передает заголовки и содержимое, сервер принимает письмо в ящик получателя.

В учебных примерах удобно поднимать SMTP на той же машине. Библиотека GreenMail слушает 127.0.0.1, принимает письма в память и позволяет прочитать их сразу после отправки, не настраивая реальный почтовый домен.

Схема запуска: создать сервер для тестового SMTP, зарегистрировать ящик получателя, собрать MimeMessage через Session Jakarta Mail и вызвать Transport.send. Тему принятого письма можно взять из массива, который возвращает сервер:

import com.icegreen.greenmail.util.GreenMail import com.icegreen.greenmail.util.ServerSetupTest import jakarta.mail.Message import jakarta.mail.Session import jakarta.mail.Transport import jakarta.mail.internet.InternetAddress import jakarta.mail.internet.MimeMessage import java.util.Properties fun main() { val server = GreenMail(ServerSetupTest.SMTP) server.start() server.setUser("reader@local.test", "reader", "pass") val props = Properties() props["mail.smtp.host"] = "127.0.0.1" props["mail.smtp.port"] = server.smtp.port.toString() props["mail.smtp.auth"] = "false" val session = Session.getInstance(props) val letter = MimeMessage(session) letter.setFrom(InternetAddress("writer@local.test")) letter.setRecipient( Message.RecipientType.TO, InternetAddress("reader@local.test"), ) letter.subject = "Welcome note" letter.setText("Short body for the intro lesson.") Transport.send(letter) val inbox = server.receivedMessages println(inbox[0].subject) server.stop() }

В консоли появляется Welcome note - та же тема, которую задали перед отправкой. Так проверяют, что письмо дошло до тестового ящика без обращения к интернет-провайдеру.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить