Тема и отправитель в Kotlin
Свойство subject у MimeMessage попадает
в заголовок Subject. Отправитель задается через
setFrom с InternetAddress: второй
аргумент конструктора - человекочитаемое имя рядом с
адресом.
Полный пример с чтением темы и адреса из принятого письма:
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("desk@local.test", "Help Desk"))
letter.setRecipient(
Message.RecipientType.TO,
InternetAddress("reader@local.test"),
)
letter.subject = "Ticket update"
letter.setText("Your request was assigned.")
Transport.send(letter)
val saved = server.receivedMessages[0]
println(saved.subject)
println(saved.from[0].toString())
server.stop()
}
Первая строка вывода - Ticket update. Вторая
содержит имя и адрес отправителя в формате, который
формирует Jakarta Mail для заголовка From.
Отправьте письмо от имени "Store Bot"
с адреса bot@local.test и с темой
"Receipt". Выведите тему и строку
from первого принятого сообщения.
Смените тему на "Reminder: payment",
тело оставьте коротким английским предложением.
Убедитесь по выводу, что в ящике лежит новая тема.