Domanda

Alcuni client di posta elettronica consentono al mittente di posizionamento delle immagini direttamente nel corpo del loro email (anziché come un allegato tradizionale). Quando ricevo una di queste e-mail nella mia richiesta, ho bisogno di essere in grado di guardare solo il corpo del messaggio text/plain e determinare che il mittente inserito un'immagine in linea.

Sto cercando di mettere una RegEx per trovare i segnaposto immagine nel corpo del messaggio text/plain modo che io possa scambiare per i tag <img> nella mia versione HTML-enabled del messaggio. (Wacky, lo so, ma questo è il requisito).

Il problema che sto trovando è che i segnaposto variano a seconda del client di posta di invio. Ad esempio, quando inviati da MS Outlook, il corpo text/plain dei più parti sguardi messaggio come questo:

Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Check out this image:

[cid:image001.jpg@01CB50D4.769583B0]

Isn't it cool??

Un messaggio simile inviato da Gmail è un po 'diverso:

Content-Type: text/plain; charset=ISO-8859-1

Check out this image:

[image: image001.jpg]

Isn't it cool??

Il corpo text/html e parte image/jpeg con la codifica base64 follow immagine.

Qualcuno ha fatto alcuna ricerca su questo prima e compilato un elenco o costruito un RegEx appositamente per questo scopo?

mi rendo conto un modo più affidabile per raggiungere il mio obiettivo è quello di guardare la parte text/html del messaggio - che sembra essere un po 'più standardizzato dai pochi test che ho fatto - ma purtroppo non ho l'accesso a che in questo scenario.

sto usando C #, se quello che conta a chiunque.

Ecco un elenco di testi / segnaposto immagine plain ho compilato finora:

  • Gmail: [image: filename.jpg]
  • Outlook 2007: [cid:filename.jpg@01CB50D4.769583B0]
  • Thunderbird 3.0.7: none
È stato utile?

Soluzione

suggerirei di andare con la parte html. Se si vuole trovare solo un segnaposto nella parte di testo normale, questo molto semplice espressione regolare dovrebbe essere sufficiente (PCRE):

^\[.*\]$

Almeno questo è ciò che funziona per gli esempi di cui sopra. Se vuoi per identificare nome dell'immagine, un'espressione po 'complicato sarebbe necessario. Mente che, questo prenderà tutte le linee che iniziano con [e termina con] Non importa ciò che i contenuti sono. Se desideri limite regexp per alcuni tipi di file, provate questo:

^\[.*(\.jpg|\.jpeg|\.png|\.gif|\.bmp).*\]$i

Gli esempi funzionerà in Perl, dal momento che non ha citato la lingua ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top