Получение только адреса электронной почты для отображения при использовании message.getFrom() в JavaMail

В настоящее время при использовании JavaMail, если я использую getFrom() для разложения сообщения в его отдельные части, getFrom() также отобразит имя отправителя. Это может быть простой вопрос, но как вы это делаете, так возвращается только адрес электронной почты. Извините, если это простой вопрос, но я не могу найти ответ.

Ответ 1

Как выясняется, адрес уже проанализирован для вас. Из-за того, что JavaMail глупый дополнительный слой абстракции, он возвращает InternetAddress объекты в качестве своего суперкласса Address. Объекты Address практически бесполезны. Вам нужно отбросить их обратно до InternetAddress, а затем просто получить электронную почту:

Address[] froms = message.getFrom();
String email = froms == null ? null : ((InternetAddress) froms[0]).getAddress();