c# - 通过C#编码将邮件正文复制到outlook中的新邮件

标签 c# outlook

在 Outlook 2013 中,我希望以编程方式将邮件正文内容包含在新邮件中。
下面是我的代码:

void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector)
{
     Outlook.MailItem mailItem = Inspector.CurrentItem as Outlook.MailItem;
     Outlook.Application oApp = new Outlook.Application();
     Outlook.Explorer oExplorer = oApp.ActiveExplorer();
     Outlook.Selection oSelection = oExplorer.Selection;

     foreach (object item in oSelection)
     {
         Outlook.MailItem mi = (Outlook.MailItem)item;
         mailItem.HTMLBody = mi.HTMLBody;
     }
}

一切正常,但原始邮件中的图像未显示。相反,它显示类似 cid:image002.png 的内容。

不知道是什么原因。

而且我想把它给客户端,所以我无法在本地保存邮件内容。

最佳答案

如果您在邮件正文的 HTML 标记中看到 cid:image002.png 语句,您还需要将嵌入的项目附加到新电子邮件中。

添加嵌入图像的基本原理是将图像附加到项目上,然后使用 HTMLBody 编写 HTML 将附件 cid 添加为 HTML 中的引用。

Attachment attachment = newMail.Attachments.Add(
 @"E:\Pictures\image001.jpg"
, OlAttachmentType.olEmbeddeditem
, null
, "Some image display name"
);

string imageCid = "image001.jpg@123";

attachment.PropertyAccessor.SetProperty(
 "http://schemas.microsoft.com/mapi/proptag/0x3712001E"
, imageCid
);

newMail.HTMLBody = String.Format(
 "<body><img src=\"cid:{0}\"></body>"
, imageCid
);

请注意,您需要将文件保存在磁盘上并将其重新附加到新电子邮件中。 Add Attachment 类的方法接受一个文件(由带有文件名的完整文件系统路径表示)或构成附件的 Outlook 项目。

此外,我建议避免使用 OOM 对象的代码中的 foreach 循环。请改用 for 循环。它允许立即释放底层 COM 对象。使用System.Runtime.InteropServices.Marshal.ReleaseComObject使用完 Outlook 对象后释放该对象。然后将变量设置为 Visual Basic 中的 Nothing(C# 中的 null)以释放对该对象的引用。您可以在Systematically Releasing Objects中阅读更多相关信息。文章。

关于c# - 通过C#编码将邮件正文复制到outlook中的新邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33254846/

相关文章:

c# - Visual Studio 2017 中的错误 "missing assembly reference"

c# - 在更新到数据库之前编辑 DataTable 中的行

c# - 在 C# 中处理群发邮件的最佳方式

c# - Outlook 拒绝来自 CryptProtectData() 的密码

c# - 改进的 IValueConverter——MarkupExtension 还是 DependencyObject?

c# - LINQ to Entities 无法识别方法 'Boolean Contains [Int32]

python - 在 Windows 中获取用户日期格式

rest - 当我们检查接收时间更长时,带有 $search 过滤器的 Microsoft Graph Mail API 不起作用

c# - Outlook 文件夹浏览对话框?

python-3.x - 如何在收到后 24 小时内下载 Outlook 附件?