Тема и отправитель в Java
Метод setSubject у 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;
public class Main {
public static void main(String[] args) throws Exception {
GreenMail server = new GreenMail(ServerSetupTest.SMTP);
server.start();
server.setUser("reader@local.test", "reader", "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("desk@local.test", "Help Desk"));
letter.setRecipient(
Message.RecipientType.TO,
new InternetAddress("reader@local.test"),
);
letter.setSubject("Ticket update");
letter.setText("Your request was assigned.");
Transport.send(letter);
MimeMessage saved = server.getReceivedMessages()[0];
System.out.println(saved.getSubject());
System.out.println(saved.getFrom()[0].toString());
server.stop();
}
}
Первая строка вывода - Ticket update. Вторая
содержит имя и адрес отправителя в формате, который
формирует почтовый API для заголовка From.
Отправьте письмо от имени "Store Bot"
с адреса bot@local.test и с темой
"Receipt". Выведите тему и строку
getFrom первого принятого сообщения.
Смените тему на "Reminder: payment",
тело оставьте коротким английским предложением.
Убедитесь по выводу, что в ящике лежит новая тема.