система разбора электронной почты - PullRequest
1 голос
/ 30 июля 2009

Я создаю систему для автоматического анализа входящих писем и заполнения базы данных из них

Первоначально ожидается только 10-20 ожидаемых форматов, но в долгосрочной перспективе существует возможность тысяч различных форматов

так, как я вижу

  1. Мне нужно определить формат электронной почты (например, регулярное выражение в строке темы)
  2. парсит письмо с правильным процессором
  3. проверьте, чтобы данные были реалистичными, возможно отметьте некоторые для ручной проверки
  4. заполнить базу данных

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

сами данные могут быть в теле письма или приложениях, таких как pdf, файлы Excel и т. Д.

ярким примером такого рода вещей являются фотогалереи Picasa, где вы можете отправлять фотографии по электронной почте на определенный адрес электронной почты, и они автоматически извлекают их и помещают в галерею для вас

Ответы [ 3 ]

2 голосов
/ 30 июля 2009

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

Таким образом, вы сохраняете каждую часть вашей системы в специализированном скрипте / программе и создаете модульное решение, которое можно легко расширить. Кроме того, вы можете использовать любой инструмент, который уже был запрограммирован кем-то другим.

Для фильтра типов файлов: я делаю что-то сопоставимое для сломанных / старых pgp-писем через procmail, чтобы добавить тип контента.

# repair pgp-encoded messages with missing Content-Type
######################################################################

:0
* !^Content-Type: message/
* !^Content-Type: multipart/
* !^Content-Type: application/pgp
{
   :0 fBw
   * ^-----BEGIN PGP MESSAGE-----
   * ^-----END PGP MESSAGE-----
   | /usr/bin/formail \
       -i "Content-Type: application/pgp; format=text; x-action=encrypt"

   :0 fBw
   * ^-----BEGIN PGP SIGNED MESSAGE-----
   * ^-----BEGIN PGP SIGNATURE-----
   * ^-----END PGP SIGNATURE-----
   | /usr/bin/formail \
       -i "Content-Type: application/pgp; format=text; x-action=sign"
}

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

0 голосов
/ 30 июля 2009

используйте PHPMailer библиотеку для него.

0 голосов
/ 30 июля 2009

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

...