2017-01-25 157 views
0

我一直在看着不同的線程,在這裏討論將圖像嵌入到電子郵件以及爲什麼他們不總是發送圖像。我正在將一個base64編碼的字符串嵌入到img標籤中,而gmail拒絕它。當我檢查電子郵件時,img src屬性爲空,並且一些信息已添加到表示它的父元素的'a'標記。我確定將我的gmail設置設置爲包含外部圖像!當我查看outlook.com電子郵件時,他們確實發送了圖像。Gmail未在電子郵件中顯示嵌入式圖像

我讀過電子郵件和圖片必須來自公共服務器?目前我從我的本地主機發送郵件運行iis(因爲我正在測試)並使用sendgrid發送我的電子郵件。

任何人都可以給我更多的建議,讓圖像顯示在我的電子郵件中的Gmail服務?

僅供參考 - 以下是我如何構建圖像標籤。我在img標籤中包含了不同的屬性以顯示它們,但這些屬性都不適用於gmail。我還使用'@Raw',因爲我正在使用razore引擎nuget包構建我的電子郵件,'Html.Raw()'不適用於Razore引擎!電子郵件文本看起來不錯,然後我把它發送到sendgrid郵寄它,我在outlook中看到它的圖像,所以我知道身體是好的。

<a href="www.mysite.com/Space/Public/@Model.SpaceId" target="_blank" class="thumbnail" style="margin-bottom: 0px;"> 
           <img alt="SpaceImage" title="Space Image" style="display: block" width="225" height="225" src="data:image/jpg;base64,@Raw(Model.SpaceThumbnail)" /> 
           <div class="caption"> 
            @Model.SpaceName 
           </div> 
          </a> 

回答

1

每當我們發送電子郵件,我們必須嵌入圖像爲它在大多數電子郵件客戶端包括Gmail成功的渲染。對於asp.net它會是這樣的:

string html = @"<html><body><img src=\"cid:imageId\"></body></html>"; 
    AlternateView view = AlternateView.CreateAlternateViewFromString(html, null, MediaTypeNames.Text.Html); 
    LinkedResource imageResource = new LinkedResource("yourImagePath", MediaTypeNames.Image.Jpeg); 
    imageResource.ContentId = "imageId"; 
    view.LinkedResources.Add(imageResource); 
相關問題