来自 C# 中生成的电子邮件的链接资源图像未显示在 Android 电子邮件上

我一直在与带有图像的 HTML 电子邮件作斗争。我让他们在桌面 Thunderbird 和 Outlook 上工作,但 Android 电子邮件显示损坏的图像。


我知道它可以工作,因为使用 Outlook 创建的电子邮件有效,并且与我正在创建的电子邮件结构非常相似。显然它不一样(否则我的会起作用!),但我看不到我错过了什么。


我没有过多地减少代码,因为我希望有人会看到 LinkedResource 或 AlternateResource 的问题,但它可能会更大。


HTML 视图中包含图像标记,可以在桌面上正常工作。它在 Android 上显示替代文本,带有损坏的图像图标。


任何帮助将不胜感激。


        bool SendEmail()

        {

            string fullBody = GenerateHeader() + Body + GenerateFooter();

            string textBody = RemoveHTML(Body);


            AlternateView avHtml = AlternateView.CreateAlternateViewFromString(fullBody, Encoding.UTF8, MediaTypeNames.Text.Html);


            avHtml.TransferEncoding = TransferEncoding.QuotedPrintable;


            MailMessage message = new MailMessage();

            message.IsBodyHtml = true;

            message.Subject = BaseSubject + Subject;

            message.Body = textBody;

            message.AlternateViews.Add(avHtml);

            message.AlternateViews.Add(avText);

            message.Headers.Add("Message-Id",

                                    String.Format("<{0}@{1}>",

                                    Guid.NewGuid().ToString(),

                                    "company.com.au"));


            var assembly = Assembly.GetExecutingAssembly();

            string resourceName = "app.UI.EmbeddedItems.logo.png";


            using (Stream stream = assembly.GetManifestResourceStream(resourceName))

            {

                LinkedResource inline = new LinkedResource(stream, "image/png");

                inline.ContentId = LogoId;

                inline.ContentType.Name = "logo.png";

                inline.ContentLink = new Uri("cid:" + inline.ContentId);

                inline.TransferEncoding = TransferEncoding.Base64;

                inline.ContentType.MediaType = "image/png";


                avHtml.LinkedResources.Add(inline);


慕标琳琳
浏览 184回答 1
1回答

HUH函数

结果证明问题不在于电子邮件的构造,而在于 HTML 本身。图像标签如下所示:<img&nbsp;id='Logo.png'&nbsp;alt='Logo'&nbsp;src='cid:LogoId'&nbsp;/>这在桌面邮件客户端上运行良好,但不会在 Android 邮件应用程序或适用于 Android 的 Google 邮件应用程序上显示图像。为了使其工作,需要用双引号替换单引号。这有效:<img&nbsp;id="Logo.png"&nbsp;alt="Logo"&nbsp;src="cid:LogoId"&nbsp;/>更改 GenerateHeader 在 img 标签中使用双引号而不是单引号解决了这个问题。对我来说没有意义,但它有效。
打开App,查看更多内容
随时随地看视频慕课网APP