Javamail: IMAP: Тип содержимого писем

#java #jakarta-mail #imap

Вопрос:

Мы используем JavaMail (IMAP) для доступа к электронной почте. Обычно письма имеют тип содержимого «составная часть/…». Сегодня мы получили письмо с приложением типа содержимого/pdf, и сообщение было в формате PDF в кодировке base64.

Я был удивлен, что это возможно. Является ли это ожидаемым поведением? Если да, то есть ли способ убедиться, что для писем, содержащих только вложение, оно будет доставляться как составная почта?

Комментарии:

1. В спецификациях нет ограничений на то, какие типы могут отображаться, а какие нет. Система отправителя может отформатировать его так, как она пожелает. Наличие единственной части, которая не является text/ частью, возможно, необычно, но в рамках спецификаций.

Ответ №1:

Да, это возможно и разрешено соответствующими стандартами (RFC-2045, RFC-2046 и другими). Единственный способ гарантировать, что этого не произойдет, — это контролировать отправителя и убедиться, что его электронные письма структурированы так, как вы хотите.

Если вы не контролируете отправителя, вам нужно быть готовым обрабатывать все, что является структурно допустимым в соответствии с RFC.

В простейшей форме электронное письмо состоит из конверта и одной части. Обычно это текст типа содержимого/обычный или текст/html с «телом» электронного письма, но это не обязательно. В этом случае отправитель отправил только PDF-файл (в виде текста или вложения) и отправил его в конверте верхнего уровня с приложением типа содержимого/pdf.

Только если сообщение должно состоять из нескольких частей (например, тела и одного или нескольких вложений), оно будет состоять из нескольких частей (например, составных/смешанных) (или нескольких вложенных частей).

Комментарии:

1. Технически приложение/pdf вполне может быть основной частью сообщения, а вовсе не «вложением». В конце концов, PDF был бы идеально подходящим форматом для форматированного текста и изображений.

2. @jstedfast Верно, хотя, насколько мне известно, большинство почтовых клиентов не смогли бы обрабатывать PDF и по-прежнему обрабатывать его так, как если бы это было вложение. Я посмотрю, смогу ли я перефразировать.