仅保存Outlook MailItem的REAL附件

JRO*_*JRO 10 c# outlook attachment

我目前正在开发一个Outlook Addin,它可以在我的MSSQL数据库中保存MailItems和Attachments.

我有一个方法,我用它的所有附件保存MailItem.但是,如果我保存所有附件,也会保存MailItem中的嵌入图像.

有谁知道如何保存所有真正的附件?我的意思是像下图中的附件:

在此输入图像描述

而不是邮件正文中的嵌入图像.

这是我用来循环遍历MailItem的所有附件然后保存它的代码:

foreach (Outlook.Attachment att in mailItem.Attachments)
{
      try
      {
          att.SaveAsFile(Path.GetTempPath() + att.FileName);

          var fi = new FileInfo(Path.GetTempPath() + att.FileName);

          //Saving attachment to DB
          var attachment = Attachment.NieuwAttachment(att.FileName, SelectedMap.DossierNr.ToString( CultureInfo.InvariantCulture), -1, Convert.ToInt32(SelectedMap.Tag), fi);
          if (!Attachment.InlezenAttachment(attachment)) continue;

          OutlookCategories.AddAttachmentCategory(mailItem);
      }
      catch (Exception ex)
      {
          var dmsEx = new DmsException("Er is een fout opgetreden bij het opslaan van een bijlage.", ex.Message, ex);
          ExceptionLogger.LogError(dmsEx);
      }
 }
Run Code Online (Sandbox Code Playgroud)

谢谢!

-----------编辑------------

我还在Microsoft TechNet上发布了这个问题,我刚刚收到了问题的答案(参见下面的链接)

Outlook 2007和2010:保存除嵌入式附件C#以外的所有附件

-----------编辑------------

我的问题仍然没有解决,我从微软获得的帮助是没用的.所以,我真的需要这个修复!

Nei*_*den 0

取决于您如何定义“真实”或“适当”附件。我假设您想忽略电子邮件中嵌入的所有图像。这些也是附件,但在 html 电子邮件的实际正文中引用。

有关如何嵌入附件的说明,请参阅此答案。关键是忽略具有由电子邮件本身正文中的图像标签引用的 Content-ID 值的附件。

  • 好的,我明白了你说的部分:忽略具有 Content-ID 的附件,但在 C# 和 OOM 中,附件对象上没有 Content-ID...所以这有点困难... (2认同)