2013-01-12 10 views
7

Z tego co rozumiem, Regex nie jest najlepszą rzeczą do wykorzystania podczas skanowania wiadomości e-mail w danym dokumencie. Zastanawiam się, czy są jakieś alternatywy do tego? Albo jakiś najlepszy sposób na ćwiczenia, którego nie jestem świadomy?Ruby - Przetwarzanie wiadomości e-mail z tekstu lub html

+0

Jak wygląda wiadomość e-mail w dokumencie? –

+0

Dlaczego nie używać wyrażeń regularnych? Ludzie testowali łańcuchy przed wyrażeń regularnych, które definiują wiadomości e-mail przez bardzo długi czas. –

+0

Określ, co masz na myśli przez "e-maile". Wiadomości e-mail za pomocą Do:/Od:/Temat: nagłówki? Adresy e-mail? Niezależnie od tego, zaktualizuj pytanie i bądź bardziej opisowy. Pokaż również przykłady tekstu, który będziesz skanować, w tym dane docelowe, które chcesz wyodrębnić. –

Odpowiedz

15

W przypadku analizowania parsowania zawsze warto polegać na bibliotekach. Masz rację, biblioteka zawsze będzie mieć do czynienia z tym problemem w sposób bardziej szczegółowy niż wyrażenie regularne, biorąc pod uwagę różne przypadki, itd

Jeden Ruby biblioteki do analizowania wiadomości e-mail jest Mail:

Mail jest internet biblioteka dla Ruby, która jest przeznaczona do obsługi wiadomości e-mail generacji, parsowanie i wysyłanie w prosty, rubinowy sposób.

[...] mail został zaprojektowany z bardzo prostego obiektowego systemu że naprawdę otwiera wiadomości email jesteś analizowania, jeśli wiesz, co robisz, możesz bawić się z każdym ostatnim kawałku swoje e-mail bezpośrednio.

Oto przykład jak treść wiadomości e-mail jest dostępna:

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... 

Umożliwia również do analizowania wieloczęściowy e-mail, a także test i rozpakować załączników.

+0

Widziałem wszędzie ten typ przykładu, a nie coś takiego jak '@my_subject_variable = mail.envelope.from' Czy to tylko dobre kopiowanie i wklejanie, czy też jest powód, dla którego wszyscy używają tego samego przykładu? –

+1

@HerbMeehan Przykład jest pobierany z pliku README repozytorium. Z pewnością możesz go użyć w proponowany sposób. –

Powiązane problemy