.NET Как извлечь встроенное изображение из сообщения электронной почты?

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

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

Спасибо


person Goran    schedule 11.08.2009    source источник
comment
с мировоззрения? веб-почта? или что-то другое?   -  person Arsen Mkrtchyan    schedule 11.08.2009
comment
Как вы получаете электронные письма? Используете Outlook? Используя компонент POP3 или IMAP? что-то другое ?   -  person Thomas Levesque    schedule 11.08.2009
comment
Что ж, да, мы используем POP3, сторонний компонент для получения писем с почтового сервера. Это компонент OpenPOP.net ...   -  person Goran    schedule 11.08.2009
comment
Почти аналогичный вопрос SO: stackoverflow.com/questions / 440356 /   -  person Kirtan    schedule 11.08.2009


Ответы (1)


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

E.g.

<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). Тада, готово!

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

РЕДАКТИРОВАТЬ

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

person Kirtan    schedule 11.08.2009