Несколько получателей в Kotlin
Поле To может содержать несколько адресов.
Каждый вызов addRecipient с типом
Message.RecipientType.TO добавляет ещё одного
получателя; сервер доставит одну копию каждому из них.
На GreenMail регистрируют оба ящика, затем проверяют число принятых сообщений:
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("alpha@local.test", "alpha", "pass")
server.setUser("beta@local.test", "beta", "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.addRecipient(
Message.RecipientType.TO,
InternetAddress("alpha@local.test"),
)
letter.addRecipient(
Message.RecipientType.TO,
InternetAddress("beta@local.test"),
)
letter.subject = "Shared bulletin"
letter.setText("One send, two inboxes.")
Transport.send(letter)
println(server.receivedMessages.size)
server.stop()
}
В консоли появляется 2 - по одному письму на
каждый зарегистрированный адрес получателя.
Добавьте третьего получателя gamma@local.test
с отдельным setUser. Выведите количество
принятых сообщений после отправки.
Отправьте письмо только на alpha@local.test
и beta@local.test с темой "Pair".
Выведите тему первого элемента массива принятых
писем.