Мне нужно видеть необработанное содержимое сообщения, то есть со всеми заголовками и разделителями MIME, а не только простой текст. Другими словами, контент, который вы бы увидели, если бы ваш почтовый клиент был написан до того, как был написан MIME. Как я могу сделать это через JavaMail (или альтернативу)?

ОБНОВЛЕНИЕ:

  1. Я использую JavaMail
  2. MIME генерируется в другом месте - мне нужно взять его как есть и отправить
  3. Мне также нужно взять необработанный MIME во входящей электронной почте и отправить его куда-нибудь без изменений.
3
SRobertJames 11 Ноя 2014 в 00:09
Немного запутался - электронная почта является чистым текстом. Даже кажущиеся бинарными данные в электронных письмах кодируются как обычный текст (и помечаются как составные двоичные файлы, чтобы их можно было расшифровать). CRLF Everthing с разделителями.
 – 
Mike 'Pomax' Kamermans
11 Ноя 2014 в 00:20
- Но большинство API электронной почты будут анализировать этот текст за вас: например, вы не увидите разделителей MIME.
 – 
SRobertJames
11 Ноя 2014 в 01:31

2 ответа

Я не уверен, хотите ли вы просмотреть необработанный MIME-контент существующего сообщения или у вас есть необработанный MIME-контент и вы хотите что-то с ним сделать.

Для первого см. метод MimeMessage.writeTo.

Для последнего см. конструктор MimeMessage, который принимает InputStream.

2
Bill Shannon 11 Ноя 2014 в 06:29
Я запутался, у writeTo есть возврат void, как это достигнет цели see the raw MIME content of an existing message
 – 
Fire Crow
11 Янв 2018 в 19:50
Запишите его во что-нибудь, на что вы сможете посмотреть, например, в ByteArrayOutputStream.
 – 
Bill Shannon
12 Янв 2018 в 00:57

Если у вас уже есть JavaMail для извлечения javax.mail.MimeMessage из какого-либо хранилища данных, вы можете просто вызвать его getInputSream() для доступа к необработанному содержимому и игнорирования того факта, что getContent() будет удобно предоставлять объект MimeMultiPart.

Если у вас нет JavaMail, вы, вероятно, захотите внести больше конкретики. Электронная почта состоит исключительно из текста, поэтому не имеет большого значения, откуда вы ее получаете, если вы можете получить InputStream или Reader для этого источника.

1
mabi 11 Ноя 2014 в 00:38
Спасибо. См. обновление: а) я использую JavaMail и б) как отправить необработанный контент с помощью вашего метода?
 – 
SRobertJames
11 Ноя 2014 в 03:13