2010-09-21 9 views
6

Sto provando a scrivere un'applicazione che riceve periodicamente e-mail. Scrive ogni mail nel database. Ma a volte mi sto 'Re:' e-mail che sembra qualcosa di simile:Rimozione della parte precedente da e-mail di risposta

Nuovo messaggio

Il 21 Settembre 2010 24:26 Qualcuno ha scritto (a):

| Vecchio messaggio |

Il formato dipende dal provider di posta elettronica.

C'è qualche libreria che aiuta a rimuovere 'Re' parte dal messaggio di posta elettronica? Forse il server IMAP può farlo? Ho tutte le e-mail precedenti da thread nel database in modo che io possa prenderle e cercare nel nuovo messaggio.

risposta

1

Personalmente penso che tu sia sfortunato qui, dato che la copia del messaggio fa parte del corpo. Quindi per rimuoverlo dovrai elaborare il corpo del messaggio e scrivere un metodo di estrazione per ogni formato conosciuto (ovviamente il problema è che non puoi conoscere tutti i possibili formati).

Quindi, invece di analizzare il corpo, perché non si mantiene l'intero messaggio nel database? Normalmente la dimensione del messaggio non dovrebbe essere il problema con il moderno DBMS. Se è davvero un problema, puoi sempre comprimere il corpo e memorizzarlo in un BLOB.

+0

Non sono d'accordo, la dimensione non è il vincolo la maggior parte del tempo ma è necessario visualizzare solo il messaggio e non le risposte alla vista. –

+0

Sono d'accordo con te sul fatto che il testo copiato è solo confuso, tuttavia, si dovrà fare un compromesso: 1. Sviluppare un filtro che catturerà sempre una parte del disordine e ha il rischio di rimuovere anche il contenuto pertinente - e quindi la causa dei rischi molto probabilmente si rivelerà dispendiosa. - oppure - 2. Vivere con il disordine e consegnare il progetto con un rischio molto più basso. - Ma come ho detto, è un compromesso! – AxelEckenberger

0
  1. No IMAP Server non sarà e non rimuovere tutto ciò
  2. Tale biblioteca non esiste perché non esiste uno standard, ogni provider di posta elettronica fa in modo diverso, Gmail ecc hanno messo a punto i propri strumenti
  3. Devi cercare modello, che in qualche modo cominciare con intestazioni con destinatario come mittente, come ...
From: <receipent> 
From: "NAME" <receipent> 
From: receipent 

e devi omettere le parti da questa riga di seguito, il solo controllo di questo parametro non sarà sufficiente poiché di solito è seguito da subject, cc, etc, quindi il pattern deve essere controllato. Penso che possa esistere qualche progetto open source o una libreria di testi, ma è troppo difficile trovarlo su google.

2

Se si è in grado di associare un messaggio di risposta (RE :) con il messaggio originale/precedente a cui è una risposta, quindi penso che si possa prendere il corpo del messaggio originale/precedente dal proprio database e quindi rimuovere quel testo dal corpo della risposta. Tuttavia, questo metodo non sarà accurato al 100%, poiché i client possono convertire un messaggio di posta HTML/Rich Text in testo normale o viceversa. In ogni caso, questo metodo probabilmente non funzionerebbe. Anche così, questa tecnica sarebbe generica e probabilmente funziona la maggior parte del tempo.

Inoltre, il provider di posta elettronica può aggiungere determinati campi di intestazione, o preamboli, all'inizio di un messaggio quotato in una risposta. In questo caso, non penso che esista una soluzione "catch all".

La mia raccomandazione sarebbe quella di indirizzare alcuni dei provider di posta elettronica veramente enormi (Gmail, Yahoo, Microsoft, ecc.), Imparare i formati che usano per le loro risposte e analizzare i messaggi di conseguenza. Inoltre, potresti gestire anche alcuni formati generici. Ad esempio, il carattere '>' è comunemente usato all'inizio di ogni riga di testo citato in una risposta.

Se hai intenzione di sviluppare in una lingua come C#, crea te stesso un'interfaccia come IReplyFormat, con un'implementazione corrispondente per ogni provider e possibilmente alcuni formati generici.

Non penso che troverete alcuna soluzione perfetta per questo problema, poiché ci sono semplicemente troppi provider di posta con troppi formati diversi. Tuttavia, penso che tu possa almeno trovare alcune tecniche, come quelle sopra menzionate, che funzioneranno per te più volte, che è il meglio che puoi sperare a questo punto.

0

Sono d'accordo con Obalix. È troppo difficile filtrare le risposte, quindi è necessario conservare l'intero messaggio. Tuttavia, quando presenti la posta elettronica all'utente, puoi nasconderne alcune parti. Quella parte può essere mostrata con un "Clicca qui per vedere il messaggio completo" o simile. Ad esempio, l'espressione regolare per filtrare i caratteri '>' assomiglierebbe a @"^[ \f\t\v>]*"

Problemi correlati