2016-05-23 10 views
0

画像とスタイルがメールに表示されません(Outlook 2016)。これは私がそれをやっている方法です:画像とスタイルがHTMLメールに表示されない

のC#:

var body = File.ReadAllText("c:/emailtemplate.html"); 
MailMessage msg = new MailMessage("[email protected]", "[email protected]", "test", body); 
msg.IsBodyHtml = true; 
var client = new SmtpClient(SmtpHost); 
client.Send(msg); 

emailtemplate.html

<div style="border:solid 1px #000;padding:20px;"> 
    <img src="logo.png" style="width:250px"> 
    <p style="color:red;font-weight:bold">Thanks for signing up!</p> 
</div> 

logo.pngがemailtemplate.html

任意のアイデア方法と同じ場所にありますイメージを入れて、メールメッセージにスタイルを適用できますか?

+0

ありがとうございました。 – Prabhu

答えて

0

イメージの完全なURLを使用し、相対URLは使用しないでください。

のような何か:http://www.example.com/logo.gif

+0

完全なURLを追加すると画像の問題が解決されますが、URLがメールクライアントからアクセス可能であることを確認する必要があります。 CSSにまだ問題があります。私のスタイルのいくつか(色のようなもの)が適用されていますが、ほとんどはそうではありません(パディングなど) – Prabhu

0

あなたのimg srcが見えるようにする機会を持つことが、少なくとも絶対にする必要があります。
img visibleをbase64文字列に変換してLinkedResourceを作成します。
AlternateViewも作成し、MailMessageインスタンスにアタッチします。これらの機能はすべてSystem.Net.Mail名前空間にあります。 VB.NETでの例を紹介します。

<div style="border:solid 1px #000;padding:20px;"> 
    <img src="data:image/jpeg;base64,####" style="width:250px"> 
    <p style="color:red;font-weight:bold">Thanks for signing up!</p> 
</div> 

Dim lnkRcs As New List(Of Net.Mail.LinkedResource) 
Dim match As System.Text.RegularExpressions.Match = System.Text.RegularExpressions.Regex.Match(msgBody, "src=""(?<src>data:(?<mime>.+?);base64,(?<data>.+?))""") 
Dim a As Integer = 0 
While match.Success 
    Dim stm = Convert.FromBase64String(match.Groups("data").Value) 
    Dim rc As New Net.Mail.LinkedResource(New System.IO.MemoryStream(stm), match.Groups("mime").Value) 
    rc.ContentId = "rc" & a 
    rc.TransferEncoding = Net.Mime.TransferEncoding.Base64 
    msgBody = msgBody.Replace(match.Groups("src").Value, "cid:" & rc.ContentId) 
    lnkRcs.Add(rc) 
    a += 1 
    match = match.NextMatch() 
End While 
Dim altHtml As Net.Mail.AlternateView = Net.Mail.AlternateView.CreateAlternateViewFromString(msgBody, Nothing, "text/html") 
For Each rc As Net.Mail.LinkedResource In lnkRcs 
    altHtml.LinkedResources.Add(rc) 
Next 
msg.AlternateViews.Add(altHtml) 
+0

ありがとう。私はこれを撃つだろう。私はクライアントがアクセス可能な完全な画像パスを使ってイメージを動作させました。 – Prabhu

+0

フルパス*は許可されていますが、保証はできません。受信者は画像を許可/表示する必要があります。私はこれらすべての問題を抱えていた。これが私がこのコードを使用する理由です。 –

関連する問題