Ben yahoo tam başlıklarını e-posta adreslerini ayıklamak gerekiyor ve onlara uyan yardıma ihtiyacım var

3 Cevap

Ben bir dizine kaydedilir birkaç bin e-postalar var. Bu e-postalar file_get_contents ile açıldı. E-postalar bu başlıklardan: Tüm cevap-için eşleşmesi gerekir. Bunları nasıl maç?

3 Cevap

Ürkütücü benzer soruya benim cevap itibaren - (ben yapmak zorunda kaldım) e-postaları ayrıştırma şaşırtıcı acı olduğunu kabul:


not that well documented Zend_Mail bir Zend_Mail_Message nesneye ham e-posta ileterek o yapmak gerekir iken bazı posta sending kütüphaneler, ham e-posta ayrıştırmak olabilir. (Note: Reading mailboxes is well documented, ben ne gördüm, bir ham mesajı okuduktan değildir.)

$message = new Zend_Mail_Message(array(), $filename);
$sender = $message->getHeader('Reply-To');

Eğer ihtiyacınız olan tüm gönderici ise, iyi bir RegEx bir kütüphaneyi kullanarak daha sonra, beden / mime parçaları işleyerek / diğer başlıklarını test edilecektir buna değer olacak, ancak kullanmak için daha iyi olurdu.

E-postaları ayrıştırma (I've seen people try to parse e-mails, and always fail in some cases they didn't think about... ) bir ağrı olacak; Ben Nto onları eliyle ayrıştırma ile gitmek, ve muhtemelen tekerleği yeniden icat ediyorum ...

Ben bazı mevcut kitaplığı kullanıyor tercih ediyorum bir çözüm, bu örneğin, Zend_Mail gibi, onlardan e-posta ve veri ayıklamak ayrıştırır.


If you really cannot (or don't want to) use any existing library, I suppose a couple of regex might do the trick... But don't forget to read the RFC about e-mails : it will help you identify some cases you wouldn't think about...

Eğer gerçekten e-postaları ayrıştırmak için karmaşık bir regex oluşturmak zorunda değilsiniz. Bulmak için PHP'nin dize yöntemlerini kullanın nerede kelime "cevap", sonra sonra bir sonraki kelimeyi almak ve "@" için check. Bu e-postalarınızı olmalıdır. Onları göndermek zaman MTA sunucularına geçerli e-posta "kontrol" bırakın.