2011-11-09 13 views
1

イメージはSQL Serverに保存されています。私は、イメージを取得し、添付ファイルとしてではなく、HTML本文の一部として、MailMessageオブジェクトに配置します。データベースから画像をmailmessageに挿入する方法

ローカルイメージファイルを使用しているサンプルが多数見つかりましたが、データベースのイメージを使用していません。

誰でも私がvb.netでこれを行う方法を知っていますか?

ありがとうございます!

ハビエル

+1

はhttp://stackoverflow.com/questions/6261956/how-to-embed-an-image-stream-to-mailmessageを参照してください。データベースからイメージを引き出すわけではありませんが、ローカルファイルパスから来ていないイメージを埋め込む方法を示しています。このコードをコードと組み合わせると、データベースから画像をメモリストリームに取り込むことができます –

答えて

0

あなたはLinkedResourceとして、データベースから画像を追加する必要があります。 イメージをデータベースからバイトとして取得する場合は、ストリームを使用してLinkedResourceを追加できます。バイトからメモリストリームを作成します。 C#で

コードが、私はあなたがimagetagとのHtmlBodyに画像を含める必要がVB.Net

var view = System.Net.Mail.AlternateView.CreateAlternateViewFromString(text, null, "text/html"); 
var resource = new System.Net.Mail.LinkedResource(new MemoryStream(bytes), mime); 
resource.ContentId = image.Name; 
view.LinkedResources.Add(resource); 
_message.AlternateViews.Add(view); 
+0

ありがとうRuben ... – Camacho

+0

gmailアカウントでこの画像が表示されない理由を知っていますか?Outlookで、他のインターネットメールで画像は正しく表示されていますか?...添付ファイルとして画像を挿入しようとしましたが、この場合はOutlookで画像も正しく表示されますが、Gmailの添付ファイルとして表示されます。 – Camacho

0

にこれを変換することができるはずだと思う:<img src="cid:myuniqueid" alt="img" />

追加することでLinkedResourceでは、イメージをメッセージに含めることができます。しかし、html本文と画像の間にリンクを作成する必要があります。これはhtml本文の「cid:myuniqueid」です。 cidの値は、LinkedResourceオブジェクトのContentIDプロパティの値と等しくなければなりません。ここで

は一例です:

 '** Create MailMessage Object 
    Dim message As New MailMessage() 

    '** Create HTML view 
    Dim htmlView As AlternateView = AlternateView.CreateAlternateViewFromString(htmlbody, System.Text.Encoding.Default, MediaTypeNames.Text.Html) 

    '** Create resource for the image 
    Dim lr As New LinkedResource(objStream) 

    '** Set the contentid for the image resource 
    lr.ContentId = "myuniqueid" 

    '** Link image resource and htmlview together 
    htmlView.LinkedResources.Add(lr) 

    '** Add view to MailMessage Object 
    message.AlternateViews.Add(htmlView) 
+0

コード内の "objStream"とは何ですか?define文を挿入できますか? – Camacho

関連する問題