c# - Outlook MailItem 嵌入图像未显示在已发送邮件中
问题描述
我有以下代码将图像嵌入到Outlook MailItems
:
private void ReplaceImageIds()
{
foreach(var image in Image.GetImagesFromText(HTMLBody))
{
var imageTag = $"<img src \" cid:{image.Id.ToString()} \"/>";
var attachment = _mailItem.Attachments.Add(image.FilePath, OlAttachmentType.olEmbeddeditem, null, "");
attachment.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x370E001F", "image/png");
attachment.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F", image.Id.ToString());
HTMLBody = HTMLBody.Replace($"ImageId={image.Id.ToString()}", imageTag);
}
}
这工作得很好。当我收到电子邮件时会显示图像 - 但就在那里。
当我在 Outlook 中查看我的已发送邮件文件夹时,图像显示如下:
有谁知道他们为什么会这样显示并且可以帮助我解决这个问题?
我对此感到困惑,因为当我收到电子邮件时会显示图像。
邮件是这样发送的:
public Boolean Send()
{
// Check if all properties are set.
Validate();
try
{
var oApp = new Application();
var oNS = oApp.GetNamespace("mapi");
oNS.Logon();
_mailItem = oApp.CreateItem(OlItemType.olMailItem) as MailItem;
// Set To, CC and BCC.
AddRecipients();
// Replace images.
ReplaceImageIds();
if (Body != null)
_mailItem.Body = Body;
if(HTMLBody != null)
_mailItem.HTMLBody = HTMLBody;
_mailItem.Subject = Subject;
// Set account to send.
SetSendingAccount(oApp);
// Add attachments.
AddAttachments();
_mailItem.Send();
oNS.Logoff();
return true;
}
catch (System.Exception ex)
{
Utils.LogException(ex, "Could not send email.");
throw new System.Exception("Could not send email.", ex);
}
}
提前致谢。
解决方案
我现在刚刚解决了这个问题。
对于那些有同样问题的人,这是我添加图像引用的新方法:
private void ReplaceImageIds()
{
foreach (var image in Image.GetImagesFromText(HTMLBody))
{
var imageTag = $"<img src = \"cid:{image.Id.ToString()}\"/>";
var attachment = _mailItem.Attachments.Add(image.FilePath, OlAttachmentType.olEmbeddeditem, 0, image.Name);
attachment.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x370E001F", "image/jpg");
attachment.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F", image.Id.ToString());
HTMLBody = HTMLBody.Replace($"ImageId={image.Id.ToString()}", imageTag);
}
}
推荐阅读
- php - 如何在functions.php中只运行一次函数
- node.js - 连接对象 ID 的嵌套数组
- flutter - 无法在颤振代码中访问已登录的 Google 用户?
- rust - 火箭编译失败
- angular - 尝试重定向到 Azure AD 进行身份验证时遇到 CORS 策略问题
- javascript - 嵌套三元无法获取局部变量,反应
- robocopy - Robocopy /xo 然后将最新的文件复制到一个空文件夹
- ios - 将背景设置为 uitabbar 无法正常工作
- facebook - 为什么我的 facebook 像素不会在元刷新重定向页面上触发?
- python - 如何在 python 中使用 selenium 替换 ID?