Thunderbird不会在电子邮件中显示嵌入的图片。
Thunderbird不会在电子邮件中显示嵌入的图片。
我正在使用以下的代码(C#)将图片嵌入到HTML邮件中:
Bitmap image = new Bitmap(); // 设置图片内容 MemoryStream ms = new MemoryStream(); image.Save(ms, ImageFormat.Jpeg); ContentType contentType = new ContentType(MediaTypeNames.Image.Jpeg); ms.Seek(0, SeekOrigin.Begin); Attachment attachment = new Attachment(ms, contentType); attachment.ContentId = "image@email"; MailMessage mail = new MailMessage(); mail.From = new MailAddress("..."); mail.To.Add("..."); mail.Subject = "..."; mail.Body = body; // 见下方 mail.IsBodyHtml = true; mail.Attachments.Add(attachment); smtpClient.Send(mail); ms.Close();
这是HTML正文的相关部分:
";
在Gmail网站上查看邮件时,显示正常:即图片嵌入到HTML正文中。
但是,在使用Thunderbird时,该图片作为附件接收,但未被识别为jpg格式。附件的名称为"Part 1.2"。如果我双击它,图片将使用计算机上安装的默认图片查看器打开。
为了能够以与大多数常见的邮件阅读器兼容的方式正确发送嵌入图片,我需要添加什么内容?
更新
要给附加的图片命名,只需添加以下内容:
attachment.Name = "name.jpg";
然而,Thunderbird仍然拒绝在HTML内显示图片。
Thunderbird doesn't show embedded images in email这个问题的出现的原因是,在发送的邮件中嵌入的图片无法在Thunderbird中显示。解决方法如下:
1. 在发送HTML格式的邮件时,使用正确的方式将嵌入图片放置在邮件中。可以参考以下代码:
AlternateView view = AlternateView.CreateAlternateViewFromString(body, null, MediaTypeNames.Text.Html); LinkedResource inline = new LinkedResource(filename, MediaTypeNames.Image.Jpeg); inline.ContentId = "image"; view.LinkedResources.Add(inline); MailMessage mail = new MailMessage(); mail.From = new MailAddress(username); mail.To.Add(address); mail.Subject = subject; mail.IsBodyHtml = true; mail.AlternateViews.Add(view); await smtpClient.SendMailAsync(mail);
以上代码使用了AlternateView和LinkedResource类来实现将图片嵌入到邮件中,并设置了图片的ContentId。这样,在邮件中使用标签引用该图片时,可以通过ContentId来引用。
2. 确保图片的嵌入路径正确。在以上代码中,filename变量表示图片的路径,确保该路径正确指向图片文件。
通过以上解决方法,可以解决Thunderbird不显示邮件中嵌入图片的问题。