.NET Как извлечь встроенное изображение из сообщения электронной почты? - PullRequest
2 голосов
/ 11 августа 2009

Здравствуйте, я работаю над проектом в .NET 1.1, и у меня есть требование извлечь (и сохранить его где-нибудь) встроенное изображение из писем, которые я получаю.

Может кто-нибудь подсказать, с чего начать?

спасибо

1 Ответ

2 голосов
/ 11 августа 2009

Электронная почта, загруженная с POP-сервера, будет в текстовом формате, вам придется проанализировать всю электронную почту и найти все теги <img /> с атрибутом src, установленным в cid:*

* 1006 Е.Г. *

<img src='cid:006901c6d391$dee64770$6c822ecf@Z2LC74Q' />

Формат электронного письма, содержащего встроенное изображение, будет следующим:

From: foo1atbar.net 
To: foo2atbar.net 
Subject: A simple example 
Mime-Version: 1.0 
Content-Type: multipart/related; boundary="boundary-example"; type="text/html" 

--boundary-example 
Content-Type: text/html; charset="US-ASCII" 

... text of the HTML document, which might contain a URI 
referencing a resource in another body part, for example 
through a statement such as: 
<IMG SRC="cid:foo4atfoo1atbar.net" ALT="IETF logo"> 
...snip...
Content-Location: CID:somethingatelse ;this header is disregarded 
Content-ID: <006901c6d391$dee64770$6c822ecf@Z2LC74Q>
Content-Type: IMAGE/GIF 
Content-Transfer-Encoding: BASE64 

R0lGODlhGAGgAPEAAP/////ZRaCgoAAAACH+PUNv 
cHlyaWdodCAoQykgMTk5LiBVbmF1dGhvcml6ZWQgZHV 
wbGljYXRpb24gcHJvaGliaXRlZC4A etc... 

...snip...

Если вы посмотрите на нижний колонтитул, он содержит версию вашего изображения в кодировке BASE64. Вы можете извлечь строку BASE64, преобразовать ее в байты на основе набора символов электронной почты и сохранить его в файл (вы можете получить расширение файла на основе Content-Type). Тада, готово!

Надеюсь, у вас есть идея, как это сделать!

EDIT

Я также нашел похожий вопрос здесь . Он использует CDO (объекты данных совместной работы).

...