我一直在与带有图像的 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);
HUH函数
相关分类