|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
Добрый день. Есть следующая ситуация: - с почтового сервера загружены письма(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 летней давности - может где то на гите есть что? напишите, если знаете Заранее спасибо за ответы по ЗАДАННЫМ вопросам ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 20:45 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
Pcrepair, А можете уточнить, какая практика? Последние спецификации: - pop3 - 25 лет - imap - 18 лет - smtp - 13 лет - eml - 13 лет И кстати, последняя версия Jakarta Mail вышла год назад. Из моей практики (правда, в основном отправки) там максимум была проблема правильно в html body ссылки на аттачменты с картинками добавить. И проблема громко сказано, решение ищется за 5 минут. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 00:42 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
формате ghgjg@jkjk.jj_2021-12.12.eml Непонятно что за формат. Можешь приаттачить образец? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 00:44 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
Pcrepair фреймворки даже от апача нежелательны, мне нужно все написать на чистом жава Это очень странное требование. Оно противоречит инженерной практике. Хотелось-бы просто узнать откуда оно идет. ОИБ запрещает? Или преподаватель захотел чтоб все сорцы были написаны твоей рукой? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 00:45 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
mayton, https://github.com/mikel/mail/blob/master/spec/fixtures/emails/attachment_emails/attachment_pdf.eml Вот например. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 00:57 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
Lelouch Понятно. Есть ключевые слова. И есть спец-разделители. Переводы строк и табуляторы слева. Формат не очень сложный. Но нужны ли автору все возможности? Все ключевые теги этого протокола. И в каком виде автор хочет получить результат парсинга. Просто парсер это очень сильное и громкое слово. И его результатом обычно является абстрактное синтаксическое дерево с терминалками в листиках. Возможно автору просто нужна коллекция объектив типа "письмо" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 01:12 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
1. Перечитав начальное сообщение вообще ничего не понял как-бы фразы "без меня написали" и "фреймворки даже от апача нежелательны" как-бы полностью взаимо исключающиеся IMHO. 2. Насколько я помню самый-самый первый стандарт на письма (из начала 90-х), это просто: Заголовки пустая строка Содержимое письма Потом появился Mime, Multi-part и прочие усложнения. Мне кажется, для 90% прикладных задач достаточно: HashMap<String,String> header; ArrayList<String> body; Ну и остается 10% прикладных задач, где зачем-то обязательно нужны multi-part письма. Lelouch Ну да, за исключением первой строки (которая непонятно что), дальше просто обычное письмо ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 03:52 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
Pcrepair фреймворки даже от апача нежелательны Это как в дельфи без vcl и класса TForm писать. С таким требованием бери и пиши руками. Что сложного в парсере текста с полями? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 06:44 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
Pcrepair мне нужно все написать на чистом жава ЖаваМыло, с его помощью можно письмо с сайта скачать, но оно слишком древнее, практика подсказывает что там будут косяки ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 08:58 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
Lelouch А можете уточнить, какая практика? - тут не понял о чем речь И кстати, последняя версия Jakarta Mail вышла год назад. - то есть javax.mail.MimeMessage все 100% писем разберет на компоненты без сбоя(исключения)? mayton Непонятно что за формат. Можешь приаттачить образец? - это не формат, это имя файла с которым письмо после загрузки с почт.сервера сохраняется на ЖД. *.eml - это формат, просто текстовый файл(само письмо) в котором ВСЕ! и заголовки и тело и аттачменты Хотелось-бы просто узнать откуда оно идет. ОИБ запрещает? - Я просто изучаю жава, а как известно, изучать нужно с начала(чистый жава). и что такое ОИБ? И в каком виде автор хочет получить результат парсинга. в виде строк. строка ОтКого, строка Тема, строка ДатаОТправки, строка имена файлов вложений пЭтро, отвечю и тебе Что сложного в парсере текста с полями? да ничего сложного, просто прийдется прогнать через него мулльен писем дабы быть уверенным что нет косяков - а это времязатратно! ну ты понел? постарайся не читать мои темы. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 09:04 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
Pcrepair, Как не читать твои темы если пёрлами восхищаются все а не я один. Что значит не использовать либы апача? ))) Ответ будет сообществу? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 09:36 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
Pcrepair Я просто изучаю жава, а как известно, изучать нужно с начала(чистый жава). и что такое ОИБ? Отдел инфо-безопасности. И в каком виде автор хочет получить результат парсинга. в виде строк. строка ОтКого, строка Тема, строка ДатаОТправки, строка имена файлов вложений В виде строк? Это глупо. Тебе ведь нужно не поток строк а структурированный набор записей типа. Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 09:56 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
mayton, Отвечать на вопросы данный мембер ооочень не любит. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 11:18 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
mayton Код: java 1.
Хидер значительно больше, чем перечисленно. И в 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 15:09 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Тут также как сохранять в ИС xml какой нить. Например с геолокацией. Если не надо запросы к ним, то просто в блоб как есть. И нет проблем. Если надо запросы, то придумывать поля и парсить. Может только два поля. Нафига все по полочкам? ... А приходит чел и говорит - хочу парсить. Ну и пусть идет парсить. Можно картину Леонардо распарсить на радугу цветов. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 15:34 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
Pcrepair Добрый день. фреймворки даже от апача нежелательны, мне нужно все написать на чистом жава Месье знает толк в извращениях. Раз уж JavaMail не годится, то предлагаю сначала написать свою JVM и RT библиотеку. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 16:19 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
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 уровней семантики. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 16:21 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev IMHO & AFAIK. Могу ошибаться. В общем, делать вчерне и на коленках - один-два дня. Делать серьезный проект более-менее корректно поддерживающие стандарты - пахать и пахать. Там только внимательно стандартны читать, скорее всего не одна неделя. Они сильно не тонкие. AFAIK Более сложная ситуация ИМХО - это когда реализация давно уже выскочила за рамки стандарта но это никого не беспокоит. Я могу ошибаться но длина GET / запроса на заре развития интернетов была не более 255 символов. Потом разные браузеры стали тихонько этот лимит тянуть в сторону увеличения. И сегодня длина ограничена.... я даже не знаю чем. Может вашей оперативкой или настройками защит от эксплоитов разве что. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 16:24 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
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 такого понять не мог. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 16:34 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
Office-97 в частности Excel импл много странных гвоздей в реализации. Хотя-бы лимит на 64к строк на один лист. Это никому не мешает пока вы работаете только в контексте 97. Но когда надо сделать миграцию "вниз" например из Office-2010 смигрировать документы - вот тогда и вылезают странности. Ну и забавное поведение при импорте книги из внешнего файла типа CSV. По любому какие-то длинные числа (номера счетов) будут сконвертированы в double со всеми вытекающими. Сохранилось это поведение сейчас? Кто знает? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 16:44 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
ну вот. как и ожидалось, 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? никто не в курсе? как оно? рабочее, или то же фуфель? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 16:48 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
mayton, Шо? Мы и адрес электронной почты парсить будем?) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 16:50 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
Я просто привел пример того как глубока кроличья нора. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 16:54 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
Pcrepair или таки попробовать Apache James Mime4J? никто не в курсе? как оно? рабочее, или то же фуфель? Дружище ты пожалуйста придержи коней. Вопрос твой - джуниорский но гонора у тебя аж на архитектора. Если у тебя есть сведенья по дефекту javax.mail - то давай исходники и шаги по воспроизведению. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 16:56 |
|
Парсер сообщений электронной почты
|
|||
---|---|---|---|
#18+
mayton Если у тебя есть сведенья по дефекту javax.mail - то давай исходники и шаги по воспроизведению. да какие дефекты, шаги, исходники? все просто и ище проще: муррзилла самтыберд(почтовый клиент если кто не понял) письмо правильно отображает(кому, куда, зачем, текст, аттачменты) а ЖаваМыло НЕТ! значит... исходники... а что исходники? код стандартный, методы стандартные, лучше не будет. в общем образно говоря на "хелло жава" ЖаваМыло потянет, но не далее. кстати в этих ваших энторнетах типа ШтакОверФлоо то же полно похожих вопросов без канкретных ответов, что намекает... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 17:14 |
|
|
start [/forum/topic.php?fid=59&msg=40112903&tid=2120306]: |
0ms |
get settings: |
6ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
38ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
419ms |
get tp. blocked users: |
0ms |
others: | 2212ms |
total: | 2687ms |
0 / 0 |