提问人:osynavets 提问时间:9/29/2023 更新时间:9/29/2023 访问量:63
内嵌图片(Content-ID 或 CID)在 Gmail 中并不总是能正常加载?
Inline images (Content-ID or CID) not always load properly in Gmail?
问:
我有一封电子邮件,里面有几十张小图片(每张不到 1kb)。所有这些图像都作为内联附件嵌入到电子邮件中,这意味着它们直接显示在电子邮件正文中。一切按预期工作,但有时某些图像未加载。如果您重新加载页面,它会有所帮助,但其他图像可能无法加载。
我看不出这个问题背后有任何可能的原因。 附件的 MIME 标题对我来说看起来不错(下面有几个)
----boundary_7_00d60d6d-0799-4fc8-827c-2712420063e2
Content-Type: image/png; name=questiontablesparklinecid4
Content-Transfer-Encoding: base64
Content-Disposition: inline
Content-ID: <[email protected]>
----boundary_7_00d60d6d-0799-4fc8-827c-2712420063e2
Content-Type: image/png; name=questiontablesparklinecid5
Content-Transfer-Encoding: base64
Content-Disposition: inline
Content-ID: <[email protected]>
发送电子邮件的代码是使用 System.Net.Mail 标准库的通用 C# 代码,没什么特别的。
foreach (var image in exportResult.Images)
{
using var stream = await _fileGateway.ReadAsStream(image.ImageUrl);
var memoryStream = CopyStreamIntoMemory(stream);
string fileName = image.ImageCID.Substring(0, image.ImageCID.IndexOf('@'));
var attachment = new Attachment(memoryStream, fileName);
attachment.ContentId = image.ImageCID;
attachment.ContentType = new ContentType("image/png");
// Mark the attachment as embedded so it isn't shown as a regular attachment
attachment.ContentDisposition!.Inline = true;
attachment.ContentDisposition.DispositionType = DispositionTypeNames.Inline;
message.Attachments.Add(attachment);
}
对我来说最重要的是,页面重新加载会使失败的图像正确加载,而一些以前正确加载的图像会失败。对我来说,它看起来像网络问题或与平衡器等有关的东西。虽然我不知道问题的真正原因,也不确定谷歌如何在下面为我提供这些图像
答: 暂无答案
评论