Question

Certains clients de messagerie permettent à l'expéditeur de placer des images directement dans le corps de leur e-mail (au lieu d'un attachement traditionnel). Quand je reçois un de ces e-mails dans ma demande, je dois être en mesure de regarder le corps du message text/plain uniquement et déterminer que l'émetteur intégré une image en ligne.

Je suis en train de concevoir un RegEx pour trouver une image par le corps du message de text/plain pour que je puisse les échanger pour les balises <img> dans ma propre version de type HTML du message. (Wacky, je sais, mais c'est l'exigence).

Le problème je trouve que les espaces réservés diffèrent en fonction du client de messagerie d'envoi. Par exemple, lors de l'envoi à partir de MS Outlook, le corps de text/plain des regards de message en plusieurs parties comme ceci:

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 message similaire envoyé par Gmail est un peu différent:

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

Check out this image:

[image: image001.jpg]

Isn't it cool??

Le corps de text/html et une partie de image/jpeg avec l'image codée base64 suivi.

Quelqu'un at-il fait des recherches à ce sujet avant et compilé une liste ou construit un RegEx spécialement à cet effet?

Je me rends compte d'une manière plus fiable pour atteindre mon objectif est de regarder la partie text/html du message - qui semble être un peu plus standardisé des quelques tests que j'ai fait - mais malheureusement, je n'ai pas l'accès à ce dans ce scénario.

J'utilise C #, si cela importe à tout le monde.

Voici une liste des espaces réservés aux images text / plain J'ai compilé jusqu'ici:

  • Gmail: [image: filename.jpg]
  • Outlook 2007: [cid:filename.jpg@01CB50D4.769583B0]
  • Thunderbird 3.0.7: none
Était-ce utile?

La solution

Je vous suggère d'aller avec une partie html. Si vous voulez trouver juste un espace réservé dans une partie de texte brut, devrait être suffisant cette expression régulière très simple (PCRE):

^\[.*\]$

Au moins est ce qui fonctionne pour des exemples ci-dessus. Si vous souhaitez identifier le nom de l'image, serait nécessaire un peu d'expression compliquée. Que l'esprit, cela attraper toutes les lignes commençant par [et se terminant par], peu importe ce que le contenu est. Si vous souhaitez limiter l'expression rationnelle certains types de fichiers, essayez ceci:

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

Exemples fonctionne en Perl, puisque vous ne l'avez pas mentionné la langue ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top