Перейти к содержимому

Как распарсить электронное письмо

  • автор:

Как распарсить ссылку JavaMail

Здравствуйте! Проведя много времени в поиске решения своей проблемы так и не нашел решения. В общем проблема следующая: Есть веб приложение, где можно отправлять приглашения к работе над проектами, т.е стандартная форма заполнения данных включая почту куда будет отправлено письмо. И вот стоит задача покрыть авто тестами этот функционал. Изначально думал делать это все на selenium’e после отправки приглашения открывать новый инстанст браузера, заходить на почтовый сервис куда будет отправлено приглашение и там производить манипуляции по поиску и открытию письма и нажатию на кнопку инвайта. Понял что это немного туговатый процесс и нашел решение для своей задачи это использовать библиотеку JavaMail для получения писем. Т.е коннектимся к почтовому сервису в данном примере я использую Gmail и получаем от туда все письма.

public class PropertiesEmail < String host = "imap.gmail.com"; String user = "userEmail"; String password = "password"; int port = 993; public Properties setServerProperties()< Properties properties = new Properties(); properties.put("mail.imap.host", host); properties.put("mail.imap.port", port); properties.put("mail.imap.starttls.enable", "true"); properties.put("mail.store.protocol", "imaps"); return properties; >> import javax.mail.*; import javax.mail.search.FlagTerm; import java.util.Properties; public class CheckUnreadEmail < public static void checkUnreadEmail()< try< //Create object email properties PropertiesEmail propertiesEmail = new PropertiesEmail(); //Set email server properties Properties props = propertiesEmail.setServerProperties(); Session session = Session.getDefaultInstance(props); Store store = session.getStore(); store.connect(propertiesEmail.host, propertiesEmail.user, propertiesEmail.password); //Create the folder object and open it Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_WRITE); //Total unread messages System.out.println("Total messages: " + folder.getMessageCount()); System.out.println("Unread messages: " + folder.getUnreadMessageCount()); //Create variable for search unread message FlagTerm flag = new FlagTerm(new Flags(Flags.Flag.SEEN), false); //Retrieve all messages //Message [] messages = folder.getMessages(); //Retrieve unread messages from the folder INBOX Message [] unreadMessage = folder.search(flag); for (int i = 0, n = unreadMessage.length; i < n; i++)< Message message = unreadMessage[i]; System.out.println("--------------"); System.out.println("Subject: " + message.getSubject()); >//folder.setFlags(unreadMessage, new Flags(Flags.Flag.SEEN), true); //close the store and folder objects folder.close(false); store.close(); >catch(Exception e) < e.printStackTrace(); >> > 

Имеется несколько вопросов: 1. Как дождаться появления письма на почте? (т.к после отправки приглашения письмо приходит не сразу) 2. Как распарсить полученное письма и вытащить от туда ссылку на инвайт?

Отслеживать

задан 18 окт 2016 в 9:34

11 1 1 бронзовый знак

0

Сортировка: Сброс на вариант по умолчанию

Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.

  • selenium
  • imap
  • javamail

Топ 12 сервисов для парсинга email-адресов

Электронная почта является одним из самых мощных инструментов интернет-маркетинга. Несмотря на ограниченную функциональность, она в некоторой степени повышает заинтересованность пользователя к предлагаемым продуктам или услугам. Один из самых популярных каналов коммуникации широко используется маркетологами не только в России, но и во всём мире.

Зачем нужно парсить email адреса

Email-маркетинг всё чаще используется в информационных и рекламных целях. Метод также может применяться для маркетинговых исследований (например, опрос, голосование и пр.), что позволяет собирать информацию о потребностях или уровне удовлетворенности клиентов касательно продукта или сервиса.

В коммерческих целях применяется реклама со специальным предложением (построение и поддержание отношений с клиентами является основной целью email-маркетинга). По мнению некоторых аналитиков, несмотря на недоверие пользователей к подобным письмам и отсутствие интереса у большинства из них, компании (благодаря рассылке), достигают существенных успехов в своём бизнесе. Небольшой процент пользователей всё же совершают покупки в интернете на основании полученных сообщений.

Преимущества парсинга перед сбором контактов на сайте

Метод востребован по ряду причин:

  • Экономия средств. Еmail-маркетинг является одним из самых дешевых способов рекламирования компании в интернете. Метод, в отличие от других инструментов, позволяет получить большую клиентскую базу без дополнительных затрат.
  • Быстрый и эффективный способ поиска контактов. Парсинг позволяет мгновенно увеличить число потенциальных клиентов. Расширяя свою аудиторию, владелец повышает объем продаж.

Другие преимущества парсинга:

  • скорость передачи информации;
  • масштабность охвата;
  • полученные данные можно сохранить в таблице (Excel, Google Docs, Word и пр.);
  • встроенные инструменты позволяют удалять дубликаты.

Программы могут выполнять поиск странам, по ключевым словам и другим критериям (в зависимости от произведенной настройки).

Виды программ и сервисов для парсинга email адресов

Для создания базы адресов электронной почты приобретают готовый продукт у сторонних компаний либо производят сбор контактов с помощью специальных программ и сервисов. Основными источниками для сбора информации являются социальные сети, тематические сайты, форумы, доски объявлений, онлайн-справочники и др.

Это мощный инструмент для привлечения потенциальных клиентов. Программа помогает производить сбор email адресов из веб-сайтов, поисковых систем, социальных сетей и форумов. LetsExtract Email Studio производит сканирование страниц, после чего автоматически генерирует список контактной информации.

Программа может предоставлять дополнительные сведения об аккаунтах (например: номера телефонов, логины в скайпе, ссылки на веб-сайты, имена владельцев и мн.др).

Главным преимуществом продукта является то, что программа поддерживает все основные поисковые системы, включая Google, Яндекс, Bing, AOL. Инструмент быстро анализирует html-страницы, генерирует на основании ключевого запроса десятки тысяч результатов, извлекая адреса электронных почт.

LetsExtract Email Studio предоставляет широкие возможности настройки (ограничение глубины поиска и количества сканирования страниц; фильтрация результатов по доменам или стране; использование регулярных выражений для сбора электронных писем и номеров телефонов; применение списка прокси серверов и другие функции).

В отличие от аналогичных инструментов, программа позволяет сканировать неограниченное количество страниц, получая список контактов за короткое время.

Другие преимущества продукта:

  • Удобный, интуитивно понятный интерфейс. LetsExtract Email Studio подходит не только для опытных пользователей, но и начинающих маркетологов. Для работы с инструментом не требуется специальных навыков.
  • После завершения сканирования, результаты можно сохранить в файлы TXT, CSV, XLS или скопировать в буфер обмена.

В программе доступны специальные настройки, которые позволяют выбрать пользователей (для парсинга) по специальным критериям (интересы, местожительство, образование, род занятий). Программное обеспечение автоматически сканирует профили в социальных сетях в соответствии с заданными параметрами для извлечения необходимой информации.

Как распарсить электронное письмо

Платформа: 8.3.6.2299, толстый клиент, обычное приложение (не УФ)

Кому-нибудь приходилось парсить переписку по почте и ответы втягивать в 1С?

У меня есть письма, в которых идет некая переписка пользователей. Нужно как-то вытягивать только суть (ответы), исключать из переписки весь остальной мусор (подписи и т.д.). Кто-нибудь делал подобное?

P.S: в интернете есть способы втягивать письма полностью, это не подходит.

Сейчас остановился на этом:

Для Каждого ТекСообщение Из мСообщения Цикл

Для Каждого ТекТекстСообщения ИЗ ТекСообщение.Тексты Цикл

ЧтениеHTML = Новый ЧтениеHTML;
ПостроительDOM = Новый ПостроительDOM;
ЧтениеHTML.УстановитьСтроку(ТекТекст);
ДокументHTML = ПостроительDOM.Прочитать(ЧтениеHTML);

// как распарсить письмо, чтобы получить только ответы?

Я понимаю что задача не тривиальная, тут все зависит от содержания письма. Ненадеюсь получить 100% решение, но хотя бы на механизмы, которые позволят это сделать, типа регулярные выражения и т.д.

На сколько это вообще рационально?

Всё письмо — мусор.
Как программно определить суть текста?

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

(0) Можно юзать data mining

Выкинуть лишние строчки можно по признакам, регэкспы тут не сильно помогут.

Делал нечто подобное для ячеек в екселе. Когда из формы накладной Торг-12 выкидываю лишнее (шапка, подвал с подписями, повторы заголовкой и итогов на каждой странице).
И остаются только «чистые данные».

(0) посмотри как в ITIL сделано или в документообороте каком-нибудь.

а вообще платформа 1Ц умеет тексты извлекать практически из чего угодно:

ИзвлечениеТекста (TextExtraction)
ИзвлечениеТекста (TextExtraction)
Свойства:

Записать (Write)
ПолучитьТекст (GetText)

Предназначен для извлечения текста из файлов произвольного формата. Используется только для операционных систем MS Windows NT 4.0, 2000, XP.

Тонкий клиент, сервер, толстый клиент, внешнее соединение.

ИзвлечениеТекста.ПолучитьТекст (TextExtraction.GetText)
ИзвлечениеТекста (TextExtraction)
ПолучитьТекст (GetText)
Синтаксис:

ПолучитьТекст()
Возвращаемое значение:

Тип: Строка.
Текст, извлеченный из файла, или пустая строка в случае ошибки.
Описание:

Извлекает текст из файла. Тип файла определяется по расширению файла (т.е. текст из файла с расширением .tmp извлечен не будет). Для извлечения текста из файлов используется интерфейс IFilter. Он является расширяемым. Можно установить дополнительные модули, чтобы появилась возможность извлекать текст из еще одного типа файлов. По умолчанию текст извлекается из файлов следующих типов (имеющих расширение): ASCX, ASP, ASPX, CSS, HHC, HTA, HTM, HTML, HHT, HTW, HTX, ODC, STM, DOC, DOT, POT, PPS, PPT, XLB, XLC, XLS, XLT, TXT, EML. Подразумевается, что файлы с расширением TXT — это текстовые файлы в кодировке ANSI или UNICODE (UTF-16).

Тонкий клиент, сервер, толстый клиент, внешнее соединение.
Примечание:

Следует использовать только в среде Windows NT 4.0, 2000, XP.
Чтобы узнать, какие расширения для IFilter уже установлены на вашем компьютере, можно скачать и установить программу IFilter Explorer (http://www.citeknet.com).
Пример:

ИмяФайла = «C:/log.txt»;
Объект = Новый ИзвлечениеТекста(ИмяФайла);
Текст = Объект.ПолучитьТекст();
Сообщить(Текст);

Как распарсить полученное от сервера письмо?

Я получил письмо от сервера по протоколу POP3. Письмо пришло в следующем виде:

Delivered-To: [email protected] To: [email protected] Date: Wed, 22 Mar 2017 07:32:55 +0300 MIME-Version: 1.0 From: =?UTF-8?B?0JrQvtC80LDQvdC00LAg0J/QvtGH0YLRiyBNYWlsLlJ1?= [email protected]> Subject: =?UTF-8?B?TWFpbC5SdSDigJMg0LHQvtC70YzRiNC1LCDRh9C10Lwg0L/QvtGH0YLQsC4g?= =?UTF-8?B?0J/QvtC30L3QsNC60L7QvNGM0YLQtdGB0Ywg0YEg0L/RgNC+0LXQutGC0LA=?= =?UTF-8?B?0LzQuCBNYWlsLlJ1IEdyb3Vw?= X-MailRu-Host: f373.i.mail.ru X-MailRu-Hide-Fast-Answer: 1 X-Postmaster-Msgtype: e-mail-ru-welcome Content-Type: multipart/alternative; boundary="------------080400030209020702000207" 

Как из такого вида грамотно взять тему письма и имя отправителя? Использую язык C#.

Отслеживать

задан 23 мар 2017 в 5:47

745 1 1 золотой знак 8 8 серебряных знаков 27 27 бронзовых знаков

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *