1
我們目前正在通過Amazon SES在C#中發送相對簡單的電子郵件。幾乎所有客戶的電子郵件看起來都正確,但Outlook並未顯示電子郵件,而是將其顯示爲附件。帶有嵌入式圖像的電子郵件在Outlook 2010和2016中顯示爲「預覽文檔」
電子郵件的建築規範:
LinkedResource logoResource = null;
//Attach Logo
if (!string.IsNullOrEmpty(emailMessage.Logo))
{
messageHtml = messageHtml.Replace("{{Logo}}", emailMessage.Logo);
var imageData = Convert.FromBase64String(emailMessage.Logo.Split(Convert.ToChar(","))[1]);
logoResource = new LinkedResource(new MemoryStream(imageData))
{
ContentId = "logo",
ContentType = new ContentType("image/png"),
TransferEncoding = TransferEncoding.Base64
};
}
var htmlView = AlternateView.CreateAlternateViewFromString(messageHtml, null, MediaTypeNames.Text.Html);
htmlView.LinkedResources.Add(logoResource);
var message = new MailMessage {
IsBodyHtml = false,
Subject = emailMessage.Subject,
Body = string.IsNullOrEmpty(emailMessage.MessageText) ? emailMessage.Message : emailMessage.MessageText,
From = new MailAddress(emailMessage.From)
};
message.AlternateViews.Add(htmlView);
模板:
<tr style="margin-bottom:15px;/*logostyle*/">
<td width="600" class="mobile" style="font-family: arial; font-size: 12px; padding: 10px;" align="center">
<img src="cid:logo" style="width: 350px" />
</td>
</tr>
讓我知道是否有其他任何你感興趣的。
hotmail.com和outlook喜歡將圖像的src從http更改爲https。也許它也會改變你的情況下的src。然後Outlook不知道在哪裏顯示圖像,因此它將其顯示爲附件 –
這是一個內嵌圖像?所以我們沒有引用服務器。 – Nix
CreateAlternateViewFromString也停止正常工作。我所要做的就是SES將消息轉換爲原始內存流並以此方式發送。您可以使用SES SendRawEmail調用。我可以發送一個代碼片段。 – JAZ