2016-05-23 79 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可見,請將其轉換爲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

完整路徑*允許*但不能保證。收件人必須允許/顯示圖像。我遇到了所有這些問題。這就是我使用這段代碼的原因。 –

相關問題