powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Парсер сообщений электронной почты
25 сообщений из 34, страница 1 из 2
Парсер сообщений электронной почты
    #40112680
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Есть следующая ситуация:
- с почтового сервера загружены письма(javax.mail) на жд в формате ghgjg@jkjk.jj_2021-12.12.eml
- письма загружены правильно, почтовый клиент(Mozilla Thunderbird) открывает письма с жд, все на месте(тема, от кого, вложения и все прочее)

все хорошо но Mozilla Thunderbird тут совершенно ни к чему(просто контроль работоспособности), мне нужна своя программа со следующими параметрами:
- парсер содержимого письма с получением значений: from, object, emal, attachments list
- вывод полученных значений в таблицу в веб-странице

конечно можно написать свой парсер(на делфи года 3-4 назад написал), но наверняка все уже лет 10 назад и без меня написали
JavaMail
Apache Commons Email
Apache James Mime4J

фреймворки даже от апача нежелательны, мне нужно все написать на чистом жава
ЖаваМыло, с его помощью можно письмо с сайта скачать, но оно слишком древнее, практика подсказывает что там будут косяки

Вопросы:
- никто не в курсе про свежие ссылки на что то похожее, не 15 летней давности
- может где то на гите есть что?
напишите, если знаете

Заранее спасибо за ответы по ЗАДАННЫМ вопросам
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112700
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,

А можете уточнить, какая практика?
Последние спецификации:
- pop3 - 25 лет
- imap - 18 лет
- smtp - 13 лет
- eml - 13 лет

И кстати, последняя версия Jakarta Mail вышла год назад.

Из моей практики (правда, в основном отправки) там максимум была проблема правильно в html body ссылки на аттачменты с картинками добавить. И проблема громко сказано, решение ищется за 5 минут.
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112701
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
формате ghgjg@jkjk.jj_2021-12.12.eml
Непонятно что за формат. Можешь приаттачить образец?
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112702
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair

фреймворки даже от апача нежелательны, мне нужно все написать на чистом жава

Это очень странное требование. Оно противоречит инженерной практике. Хотелось-бы просто узнать откуда оно идет.
ОИБ запрещает? Или преподаватель захотел чтоб все сорцы были написаны твоей рукой?
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112704
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112706
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник

Понятно. Есть ключевые слова. И есть спец-разделители. Переводы строк и табуляторы слева.

Формат не очень сложный. Но нужны ли автору все возможности? Все ключевые теги этого протокола.
И в каком виде автор хочет получить результат парсинга.

Просто парсер это очень сильное и громкое слово. И его результатом обычно является абстрактное синтаксическое
дерево с терминалками в листиках.

Возможно автору просто нужна коллекция объектив типа "письмо" ?
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112716
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Перечитав начальное сообщение вообще ничего не понял
как-бы фразы "без меня написали" и "фреймворки даже от апача нежелательны" как-бы полностью взаимо исключающиеся IMHO.

2.
Насколько я помню самый-самый первый стандарт на письма (из начала 90-х), это просто:

Заголовки
пустая строка
Содержимое письма

Потом появился Mime, Multi-part и прочие усложнения.

Мне кажется, для 90% прикладных задач достаточно:

HashMap<String,String> header;
ArrayList<String> body;

Ну и остается 10% прикладных задач, где зачем-то обязательно нужны multi-part письма.



Ну да, за исключением первой строки (которая непонятно что), дальше просто обычное письмо
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112720
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair
фреймворки даже от апача нежелательны
сам придумал)))))
Это как в дельфи без vcl и класса TForm писать.
С таким требованием бери и пиши руками.
Что сложного в парсере текста с полями?
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112728
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair
мне нужно все написать на чистом жава ЖаваМыло, с его помощью можно письмо с сайта скачать, но оно слишком древнее, практика подсказывает что там будут косяки
Х...я у вас практика .
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112729
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lelouch
А можете уточнить, какая практика? - тут не понял о чем речь
И кстати, последняя версия Jakarta Mail вышла год назад. - то есть javax.mail.MimeMessage все 100% писем разберет на компоненты без сбоя(исключения)?


mayton
Непонятно что за формат. Можешь приаттачить образец? - это не формат, это имя файла с которым письмо после загрузки с почт.сервера сохраняется на ЖД. *.eml - это формат, просто текстовый файл(само письмо) в котором ВСЕ! и заголовки и тело и аттачменты

Хотелось-бы просто узнать откуда оно идет. ОИБ запрещает? - Я просто изучаю жава, а как известно, изучать нужно с начала(чистый жава). и что такое ОИБ?
И в каком виде автор хочет получить результат парсинга.
в виде строк. строка ОтКого, строка Тема, строка ДатаОТправки, строка имена файлов вложений

пЭтро, отвечю и тебе
Что сложного в парсере текста с полями?
да ничего сложного, просто прийдется прогнать через него мулльен писем дабы быть уверенным что нет косяков - а это времязатратно!
ну ты понел? постарайся не читать мои темы.
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112734
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,
Как не читать твои темы если пёрлами восхищаются все а не я один.
Что значит не использовать либы апача?
)))
Ответ будет сообществу?
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112738
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair

Я просто изучаю жава, а как известно, изучать нужно с начала(чистый жава). и что такое ОИБ?

Отдел инфо-безопасности.

И в каком виде автор хочет получить результат парсинга.
в виде строк. строка ОтКого, строка Тема, строка ДатаОТправки, строка имена файлов вложений

В виде строк? Это глупо. Тебе ведь нужно не поток строк а структурированный набор записей типа.
Код: java
1.
public record Email(String from, String to, Optional<String> cc, Optional<String> bcc, String subject, String body) {}
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112755
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Отвечать на вопросы данный мембер ооочень не любит.
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112867
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Код: java
1.
public record Email(String from, String to, Optional<String> cc, Optional<String> bcc, String subject, String body) {}



Хидер значительно больше, чем перечисленно. И в To и в cc, bcc может быть несколько e-mail'ов разделенных запятой. Ну и как минимум mime type и encoding для современного мира уже тоже необходимы. Может быть CP1251, может быть UTF-8 и пр

На верхнем уровне, скорее всего, должно быть что-то типа "sorted HashMap" + ListArray для body, как наиболее универсальное хранилище. (наверное просто HashMap не очень хорошо, т.к. будет порядок заголовков менять, вроде есть linked list hash map'ы)

По мере усложнения задачи, выростет куча всякой мути, MultiPart message, attachment и пр. Насколько я помню, стандарт для multi part это больше, чем просто attachment. И х.з. как правильно/корректно отобразить multi part в структуру классов. По логике, это просто письмо, которое содержит много других писем внутри. Ну и х.з. как правильно/корректно отобразить attachment'ы. Т.к. письмо + набор файлов - это сильно упрощенное представление об multi part. Ну и файлы могут и без всякого multi part в письме содержаться (просто UUE или Base64 вставка в тексте)

IMHO & AFAIK. Могу ошибаться. В общем, делать вчерне и на коленках - один-два дня. Делать серьезный проект более-менее корректно поддерживающие стандарты - пахать и пахать. Там только внимательно стандартны читать, скорее всего не одна неделя. Они сильно не тонкие. AFAIK
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112878
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
Тут также как сохранять в ИС xml какой нить. Например с геолокацией.
Если не надо запросы к ним, то просто в блоб как есть.
И нет проблем.
Если надо запросы, то придумывать поля и парсить. Может только два поля. Нафига все по полочкам?
...
А приходит чел и говорит - хочу парсить. Ну и пусть идет парсить.
Можно картину Леонардо распарсить на радугу цветов.
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112889
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair
Добрый день.
фреймворки даже от апача нежелательны, мне нужно все написать на чистом жава

Месье знает толк в извращениях.
Раз уж JavaMail не годится, то предлагаю сначала написать свою JVM и RT библиотеку.
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112890
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev

На верхнем уровне, скорее всего, должно быть что-то типа "sorted HashMap" + ListArray для body, как наиболее универсальное хранилище. (наверное просто HashMap не очень хорошо, т.к. будет порядок заголовков менять, вроде есть linked list hash map'ы)

Да. Задача пахнет наколеночной. Я помню на хабре были хорошие статьи про парсинг email адреса.

https://habr.com/en/post/274985/
https://habr.com/en/post/175375/

Еще некоторые забавные факты из области email. Хост теоретически может быть ip-адресом. И само имя
получателя может содержать опциональные теги. Как этим пользуются сегодня - ХЗ. Но раз оно есть то
это надо поддержать.

Давно не читал по этому поводу RFC и даже не знаю каково положение дел сейчас. Но само желание
автора накрапать свой парсер просто исходя из кастомного формата сериализации почты - вызывает
ужас и оторопь.

Мне кажется что сегодня прошли те времена когда можно было открыть telnet и набрать HELO...
Протоколы усложнились и стали даже ... многослойные что-ли. Взать тот-же xml и там можно
быстро найти 3-5 уровней семантики.
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112893
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev

IMHO & AFAIK. Могу ошибаться. В общем, делать вчерне и на коленках - один-два дня. Делать серьезный проект более-менее корректно поддерживающие стандарты - пахать и пахать. Там только внимательно стандартны читать, скорее всего не одна неделя. Они сильно не тонкие. AFAIK

Более сложная ситуация ИМХО - это когда реализация давно уже выскочила за рамки стандарта
но это никого не беспокоит. Я могу ошибаться но длина GET / запроса на заре развития интернетов
была не более 255 символов. Потом разные браузеры стали тихонько этот лимит тянуть в сторону
увеличения. И сегодня длина ограничена.... я даже не знаю чем. Может вашей оперативкой или настройками
защит от эксплоитов разве что.
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112896
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Более сложная ситуация ИМХО - это когда реализация давно уже выскочила за рамки стандарта
но это никого не беспокоит.

Это какой-то подход M$. Плевать на стандарты и делать по свойму

Рано или поздно вылезет боком. Что на одних тестовых наборах будет работать, все будет хорошо. Потом появятся клиенты или письма от клиентов с другими почтовыми программами и все накроется медным тазом.

Видел реализацию RTF-парсера в 500 строк на PL/SQL построенную на instr/substr. Оно даже работало. Для MS Office 97. Но шаг влево, шаг вправо - документ (шаблон отчета) уже не парсился, начинай рисовать с нуля. )))

p.s. Только заготовка пустого парсера RTF на C из примера M$ была где-то под 3-4 тыс. строк кода. Без функционала.
p.p.s. про такие вещи, что блоки { } в RTF могут быть вложены и, по стандарту, нужно все развесистое состояние парсера сохранять/востанавливать, разумеется на PL/SQL не задумывались.
p.p.p.s. как я помню, первым версиям Web-браузеров тоже плахело на конструкциях вида <p>Некий текст <b>с болдом</p><p> и тут болд тоже продолжается</b>, а тут уже нет</p> ))) такие констуркции первые версии Ms Word при сохранении в Html городили. Никто кроме IE такого понять не мог.
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112901
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Office-97 в частности Excel импл много странных гвоздей в реализации. Хотя-бы лимит на 64к строк
на один лист. Это никому не мешает пока вы работаете только в контексте 97. Но когда надо сделать
миграцию "вниз" например из Office-2010 смигрировать документы - вот тогда и вылезают странности.

Ну и забавное поведение при импорте книги из внешнего файла типа CSV. По любому какие-то длинные
числа (номера счетов) будут сконвертированы в double со всеми вытекающими. Сохранилось это поведение
сейчас? Кто знает?
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112903
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну вот. как и ожидалось, javax.mail.MimeMessage не в состоянии даже пяток разных писем обработать
тут недодает message.getFrom() там не читает message.getMessageID()
в общем полный бардак, как и ожидалось.

представляю себе че там будет при попытке восстановить имя аттчемнта типа
name="=?UTF-8?Q?=D0=A1=D1=87=D0=B5=D1=82_20-00021646031=2Ezip?="

впрочем на делфи то же все пришлось писать самому
или таки попробовать Apache James Mime4J? никто не в курсе? как оно? рабочее, или то же фуфель?
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112905
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Шо? Мы и адрес электронной почты парсить будем?)
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112906
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я просто привел пример того как глубока кроличья нора.
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112912
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair

или таки попробовать Apache James Mime4J? никто не в курсе? как оно? рабочее, или то же фуфель?

Дружище ты пожалуйста придержи коней. Вопрос твой - джуниорский но гонора у тебя аж на архитектора.
Если у тебя есть сведенья по дефекту javax.mail - то давай исходники и шаги по воспроизведению.
...
Рейтинг: 0 / 0
Парсер сообщений электронной почты
    #40112920
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Если у тебя есть сведенья по дефекту javax.mail - то давай исходники и шаги по воспроизведению.


да какие дефекты, шаги, исходники? все просто и ище проще:
муррзилла самтыберд(почтовый клиент если кто не понял) письмо правильно отображает(кому, куда, зачем, текст, аттачменты) а
ЖаваМыло НЕТ! значит...
исходники... а что исходники? код стандартный, методы стандартные, лучше не будет.
в общем образно говоря на "хелло жава" ЖаваМыло потянет, но не далее.
кстати в этих ваших энторнетах типа ШтакОверФлоо то же полно похожих вопросов без канкретных ответов, что намекает...
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Парсер сообщений электронной почты
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]