Несколько получателей в Java
Поле 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;
public class Main {
public static void main(String[] args) throws Exception {
GreenMail server = new GreenMail(ServerSetupTest.SMTP);
server.start();
server.setUser("alpha@local.test", "alpha", "pass");
server.setUser("beta@local.test", "beta", "pass");
Properties props = new Properties();
props.put("mail.smtp.host", "127.0.0.1");
props.put(
"mail.smtp.port",
String.valueOf(server.getSmtp().getPort()),
);
props.put("mail.smtp.auth", "false");
Session session = Session.getInstance(props);
MimeMessage letter = new MimeMessage(session);
letter.setFrom(new InternetAddress("writer@local.test"));
letter.addRecipient(
Message.RecipientType.TO,
new InternetAddress("alpha@local.test"),
);
letter.addRecipient(
Message.RecipientType.TO,
new InternetAddress("beta@local.test"),
);
letter.setSubject("Shared bulletin");
letter.setText("One send, two inboxes.");
Transport.send(letter);
System.out.println(server.getReceivedMessages().length);
server.stop();
}
}
В консоли появляется 2 - по одному письму на
каждый зарегистрированный адрес получателя.
Добавьте третьего получателя gamma@local.test
с отдельным setUser. Выведите количество
принятых сообщений после отправки.
Отправьте письмо только на alpha@local.test
и beta@local.test с темой "Pair".
Выведите тему первого элемента массива принятых
писем.