Для электронной почты существует множество возможных структур MIME. Общее решение может быть довольно сложным, поскольку, помимо прочих вопросов, необходимо учитывать подписанные и зашифрованные сообщения. Различные почтовые программы будут использовать другую структуру MIME, и, конечно, некоторые почтовые программы будут иметь ошибки в использовании MIME. Вам нужно решить, какие случаи вам нужно поддерживать.
В целом, multipart/alternative используется для размещения разных версий основного тела сообщения и поэтому может быть пропущен, поскольку он не содержит вложений. Как правило, сообщение с вложениями будет содержать многостраничный/смешанный контент верхнего уровня с первой частью тела, содержащей основной текст сообщения. Первой частью может быть простая текстовая часть, многочастная/альтернативная с текстовыми/plain и text/html частями, или multipart/связанная с частью text/html и связанными с ней изображениями.
Приложения, как правило, но не всегда имеют Content-Disposition приложения. Вложения обычно, но не всегда, имеют имя файла.
Итак, хороший подход для начала - это рассматривать сообщения только с многоуровневым/смешанным контентом верхнего уровня, а затем рассматривать части после первой части как вложения, независимо от того, говорят они об этом или нет. И, как я сказал выше, подписанные и зашифрованные сообщения сделают это более сложным.
Ваш второй 'if' является избыточным и должен быть удален. Строка 'part.saveFile' не будет компилироваться, потому что обратные слэши являются специальными символами в строковых литералах Java. – VGR