#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 и по-прежнему обрабатывать его так, как если бы это было вложение. Я посмотрю, смогу ли я перефразировать.