为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕标琳琳 2021-11-07 19:32:04
我一直在与带有图像的 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);
查看完整描述

1 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

结果证明问题不在于电子邮件的构造,而在于 HTML 本身。图像标签如下所示:

<img id='Logo.png' alt='Logo' src='cid:LogoId' />

这在桌面邮件客户端上运行良好,但不会在 Android 邮件应用程序或适用于 Android 的 Google 邮件应用程序上显示图像。为了使其工作,需要用双引号替换单引号。

这有效:

<img id="Logo.png" alt="Logo" src="cid:LogoId" />

更改 GenerateHeader 在 img 标签中使用双引号而不是单引号解决了这个问题。对我来说没有意义,但它有效。


查看完整回答
反对 回复 2021-11-07
  • 1 回答
  • 0 关注
  • 183 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信