2017-01-25 3 views
0

Я искал разные темы в сети и здесь, в SO, обсуждая встраивание изображений в электронную почту и почему они не всегда отправляют изображение. Я внедряю строку с кодировкой base64 в тег img, и gmail отклоняет ее. Когда я проверяю адрес электронной почты, атрибут img src пуст, и некоторая информация была добавлена ​​в тег 'a', который представляет его родительский элемент. Я постарался установить настройку gmail для включения внешних изображений! Когда я смотрю на электронные письма outlook.com, они отправляют изображение.Gmail, не отображающий встроенные изображения по электронной почте

Я читал, что письмо и изображение должны поступать с общего сервера? В настоящее время я отправляю электронное письмо с моего localhost, запускающего iis (потому что я тестирую) и используя sendgrid для отправки своих писем.

Может ли кто-нибудь дать мне больше советов по поводу получения изображения для отображения в моем письме в службе gmail?

FYI - Вот как я создаю тег изображения. Я включил различные атрибуты в тег img, чтобы показать его, но ни один из этих атрибутов не работал в gmail. Я также использую «@Raw», потому что я строю свой адрес электронной почты с пакетом nzet с пакетом razore и «Html.Raw()» не работает с Razore Engine! Текст электронной почты выглядит хорошо, прежде чем я отправлю его в 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); 
Смежные вопросы