E-posta ayrıştırma sistemi

3 Cevap php

i otomatik olarak gelen e-postaları ayrıştırma ve onlardan bir veritabanı yerleştirmek için bir sistem inşa ediyorum

başlangıçta sadece gelen 10-20 beklenen formatları olacak, ancak uzun vadeli farklı biçimlerde binlerce olasılığı var

onu görüyorum yolu

  1. i (örneğin, konu satırında regex) e-posta biçimini tanımlamak gerekir
  2. Doğru işlemci ile e-posta ayrıştırmak
  3. veri gerçekçi olup olmadığını kontrol edin, belki manuel kontrol için bazı bayrak
  4. veritabanı doldurmak

Sonra ben bu yapısı nasıl öneriler olduğunu, örneğin i sisteminin esnek olması gerekir, veritabanı veya düz dosya biçimlerini muhafaza ederim, bu konu hat algılama olabilir yeterli değildir ve ben de taramak zorunda kalabilirsiniz e-posta başlıklarını.

veri kendisi e-posta vücudunun veya pdf olarak ekleri olabilir, dosyaları vb excel

şey bu tür bir örnektir belirli bir e-posta adresine fotoğrafları e-posta picasa fotoğraf galerisi seviyor ve otomatik olarak bunları ayıklar ve sizin için bir galeride koyar

3 Cevap

Muhtemelen en ünlü cevabı, ancak procmail gibi, bunu yapmak için standart şekillerde bakmak değil? E-postaların bir temel anlayış sağlar ve çevresinde her şeyi filtreler oluşturmanıza olanak verir. (Ilk bir dosya türü dedektörü aracılığıyla posta İşleminiz olası tüm başlıklarına İfadelerinin uygulayarak, ...)

Eğer özel bir script / programda da sistemin her bir parçası tutmak ve kolayca uzatılabilir modüler bir çözüm üretmek yoludur. Artı zaten başkası tarafından programlanmış herhangi bir aracı kullanabilirsiniz.

Dosya türü filtresi için: Ben bir içerik türü eklemek için procmail üzeri kırık eski / pgp-postalar için benzer bir şey yapıyorum.

# 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"
}

Daha fazla işlem daha sonra içerik türlerini maç ve (bilinmeyen türleri ve jenerik işleyicileri) özel tip özel işleyicileri atayabilirsiniz.

Ne muhtemelen yapmak istediğim ilk veritabanı aracılığıyla doğru biçimde aktarmak sonra, başlıkları ve konu satırında ayrıştırmak değildir. Formatları binlerce potansiyel var çünkü dinamik olduğu için, bir veritabanı kolay yolu olacak. Hiçbir kullanım binlerce dosya oluşturmak.

bunun için PHPMailer kütüphane kullanın.