我一直在與帶有圖像的 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 標簽中使用雙引號而不是單引號解決了這個問題。對我來說沒有意義,但它有效。
- 1 回答
- 0 關注
- 215 瀏覽
添加回答
舉報
0/150
提交
取消