2013-01-12 19 views
7

Anladığım kadarıyla, belirli bir belgede e-postaları tararken Regex en iyi şey değildir. Bunun için alternatifler olup olmadığını merak ediyorum? Ya da habersiz bazı en iyi uygulama yolu?Ruby - Metin veya html'den e-postaları ayrıştırma

+0

Belgede e-posta nasıl görünüyor? –

+0

Neden bir regex kullanmıyorsunuz? İnsanlar çok uzun süre e-postaları tanımlayan regeekslere karşı dizeleri test ediyorlar. –

+0

"E-postalar" ile ne demek istediğinizi tanımlayın. E-posta mesajları, ile Kime:/Kimden:/Konu: üstbilgiler? E-mail adresleri? Hangisi olursa olsun, sorunuzu güncelleyin ve daha açıklayıcı olun. Ayrıca, ayıklamak istediğiniz hedef veriler dahil olmak üzere, taranacak metnin örneklerini gösterin. –

cevap

15

Ayrıştırma işleri için kütüphanelere güvenmek her zaman iyi bir fikirdir. Sen bir kütüphane, her zaman farklı durumlarda göz önüne alındığında, normal ifadenin daha ayrıntılı olarak sorunu ele olacak vb

e-postaları ayrıştırmak için bir Ruby kütüphanesi Mail geçerli:

Posta bir internet olduğunu Ruby için kütüphane nesil, , ayrıştırmak ve basit, rubyesque bir şekilde göndermek için tasarlanmıştır.

[...] Posta gerçekten ne yaptığınızı biliyor eğer, ayrıştırma e-posta iletilerini açılır çok basit bir nesne yönelimli sistemi ile dizayn edilmiştir, sen her geçen biraz oynama işini senin Doğrudan e-posta. Aynı zamanda bir çok parçalı e-posta yanı sıra testi ayrıştırmak ve ekleri ayıklamak sağlar

mail = Mail.read('/path/to/message.eml') 

mail.envelope.from #=> '[email protected]' 
mail.from.addresses #=> ['[email protected]', '[email protected]'] 
mail.sender.address #=> '[email protected]' 
mail.to    #=> '[email protected]' 
mail.cc    #=> '[email protected]' 
mail.subject   #=> "This is the subject" 
mail.date.to_s  #=> '21 Nov 1997 09:55:06 -0600' 
mail.message_id  #=> '<[email protected]>' 
mail.body.decoded #=> 'This is the body of the email... 

: Burada

-postanın içeriğinden erişilen nasıl bir örnektir.

+0

Sadece bu tür her yerde gördüğüm gibi bir şey görmedim ve '@my_subject_variable = mail.envelope.from' gibi bir şey değil, sadece iyi bir kopyalama ve yapıştırma işi mi, yoksa herkesin aynı örneği kullanmasının bir sebebi var mı? –

+1

@HerbMeehan Örnek, deponun README dosyasından alınmıştır. Kesinlikle, önerdiğiniz şekilde kullanabilirsiniz. –