Простое письмо в Kotlin
Простое письмо состоит из одной текстовой части без
HTML и вложений. Метод setText у MimeMessage
задает содержимое в кодировке по умолчанию и выставляет
тип text/plain.
После Transport.send тело принятого сообщения
читают через getContent и приводят к строке:
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 = "Plain sample"
letter.setText("The shipment left the warehouse at noon.")
Transport.send(letter)
val body = server.receivedMessages[0].content as String
println(body)
server.stop()
}
В выводе - полный текст без темы и служебных заголовков. Так проверяют, что клиент и тестовый сервер согласованы по адресу получателя и порту SMTP.
Отправьте письмо с темой "Status" и текстом
"All items packed." на
reader@local.test. Выведите тело из
локального ящика.
Задайте текст из двух строк: "Line one"
и "Line two" через символ перевода строки.
После отправки выведите тело целиком.