2016-06-09 6 views
0

Как загрузить вложение из письма с Content-Type: multipart/alternative;JavaMail скачать приложение из письма

Multipart multiPart = (Multipart) message.getContent(); 

int numberOfParts = multiPart.getCount(); 
for(int j = 0; j < numberOfParts; j++) 
{ 
    MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(j); 

    if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) 
    { 
     part.saveFile("C:\\Users\\Demo\\Desktop\\" + part.getFileName()); 

    } 
} 
+0

Ваш второй 'if' является избыточным и должен быть удален. Строка 'part.saveFile' не будет компилироваться, потому что обратные слэши являются специальными символами в строковых литералах Java. – VGR

ответ

0

Для электронной почты существует множество возможных структур MIME. Общее решение может быть довольно сложным, поскольку, помимо прочих вопросов, необходимо учитывать подписанные и зашифрованные сообщения. Различные почтовые программы будут использовать другую структуру MIME, и, конечно, некоторые почтовые программы будут иметь ошибки в использовании MIME. Вам нужно решить, какие случаи вам нужно поддерживать.

В целом, multipart/alternative используется для размещения разных версий основного тела сообщения и поэтому может быть пропущен, поскольку он не содержит вложений. Как правило, сообщение с вложениями будет содержать многостраничный/смешанный контент верхнего уровня с первой частью тела, содержащей основной текст сообщения. Первой частью может быть простая текстовая часть, многочастная/альтернативная с текстовыми/plain и text/html частями, или multipart/связанная с частью text/html и связанными с ней изображениями.

Приложения, как правило, но не всегда имеют Content-Disposition приложения. Вложения обычно, но не всегда, имеют имя файла.

Итак, хороший подход для начала - это рассматривать сообщения только с многоуровневым/смешанным контентом верхнего уровня, а затем рассматривать части после первой части как вложения, независимо от того, говорят они об этом или нет. И, как я сказал выше, подписанные и зашифрованные сообщения сделают это более сложным.

Смежные вопросы