Письмо с разметкой в Kotlin
Текстовое письмо и HTML различаются типом содержимого.
Вместо setText вызывают setContent:
первый аргумент - строка с разметкой, второй - MIME-тип
text/html с указанием кодировки.
Пример с жирным словом в теле и чтением HTML-строки обратно:
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 = "HTML memo"
letter.setContent(
"<p>Order is <b>confirmed</b>.</p>",
"text/html; charset=utf-8",
)
Transport.send(letter)
val html = server.receivedMessages[0].content as String
println(html)
server.stop()
}
В выводе остаются теги <p> и <b> -
это сырое HTML-содержимое части письма, а не
отрендеренная страница.
Отправьте HTML с заголовком <h1>News</h1>
и абзацем "Weekly digest.". Выведите
полученную строку содержимого.
Сформируйте разметку со списком из двух пунктов
"A" и "B" через <ul>.
Проверьте по выводу, что оба пункта присутствуют
в теле.