0

人々が電子メールで投稿を送信できるフォーラムソリューションがあります。現在、メールが解析されると、画像は投稿に添付ファイルとして追加されるだけです。私たちがやりたいのは、電子メールを解析し、メールから埋め込まれた画像を取得して、出力HTMLでインライン画像に変換することです。メールクライアントのOutlook、Hotmail、Gmailなどをサポートする必要があります

Outlookの元の電子メール:

<img id="Picture_x0020_1" src="cid:image001.jpg@01CD172C.038D3C80">

望ましい結果は、添付ファイルを保存し、srcを次のようにすることです。

<img id="Picture_x0020_1" src="http://www.site.com/default.aspx?action=ViewAttachment&paid=594">

次のような方法で画像を取得できることを認識しています。.NET電子メールメッセージから埋め込み画像を抽出するにはどうすればよいですか。

正規表現をクラックして開く必要がありますか、それともこれを簡素化するライブラリがありますか?メールをHTMLとしてレンダリングしたいのは私たちだけではないと確信しています

4

1 に答える 1

1

あなたは確かに、埋め込まれた画像を抽出するためのコードを書き、自分で体を修正する道を進むことができます。それはおそらく多くの仕事になるでしょう。

http://www.quiksoft.com/のEasyMail.netを使用しています

始めるにはこれで十分です:

private POP3 pop3 = new POP3();
pop3.Connect(pop3Address, port);
var memoryStream = new MemoryStream();
pop3.DownloadMessage(position, memoryStream);
var email = new EmailMessage(memoryStream)
var streamView = new HTMLStreamView(email, urlPrefix);
string body = streamView.Body;
int counter = 0;

foreach (Stream stream in streamView.Streams)
{
    if (counter != 0)
    {
        stream.Position = 0;
        byte[] embeddedObjectBytes = new byte[(int)stream.Length];
        stream.Read(embeddedObjectBytes, 0, (int)stream.Length);

        string urlAndCounter = urlPrefix + counter.ToString();
        string uniqueUrlAndCounter = GetUniqueUrl(urlAndCounter);
        if (body.Contains(urlAndCounter + "\""))
        {
          body = body.Replace(urlAndCounter + "\"", uniqueUrlAndCounter + "\"");
        }
        else if (body.Contains(urlAndCounter + " "))
        {
          body = body.Replace(urlAndCounter + " ", uniqueUrlAndCounter + " ");
        }

        SaveEmbeddedObject(embeddedObjectBytes,uniqueUrlAndCounter);
    }

    counter++;
}
于 2012-04-12T15:31:00.000 に答える