VSTO 2010 - 如何从Outlook中获取和保存附件或邮件

时间:2016-08-04 11:10:43

标签: c# outlook ms-office vsto

长话短说 - 我正在使用VSTO创建一个工具,以PDF格式将文档数字化存档,并自动将它们分类到相应的文件夹中。使用Microsoft Word 2010加载项,我已经达到了我想要的确切结果,但现在我必须使其适应Outlook 2010。

在Word中,我可以通过

参考我的活动文档
doc = Globals.ThisAddIn.Application.ActiveDocument;

并设置文件格式,我使用

FileFormat = WdSaveFormat.wdFormatPDF;

我通过

保存
doc.ExportAsFixedFormat(Name.ToString(), WdExportFormat.wdExportFormatPDF, false, WdExportOptimizeFor.wdExportOptimizeForPrint, WdExportRange.wdExportAllDocument, 0, 0, WdExportItem.wdExportDocumentContent, false, false, WdExportCreateBookmarks.wdExportCreateWordBookmarks, false, true, true, ref FixedFormatExtClassPtr);

我认为Outlook会有很大不同,因为我必须考虑:

  1. 定义活动电子邮件(我认为它的语法与ActiveDocument非常相似)
  2. 检查是否有附件
  3. 电子邮件中的附件数量
  4. 所述附件的格式以及是否可以将其转换为PDF
  5. 如果可以保存电子邮件内容
  6. 如果能够回答/解决上述任何问题,那么我将非常感激。谢谢

    (我对Stack Overflow很新,据我所知,这个问题遵循我在网站上阅读的规则。如果没有,请你礼貌地告诉我,我会删除它)

1 个答案:

答案 0 :(得分:1)

我可以回答你的一些问题并不是全部。

1 - 如果您想获得所选项目,请使用

var ex =  Application.ActiveExplorer;
var selected = ex.Selection

如果您想要打开物品,请使用

var opened = Application.ActiveInspector.currentItem;

2& 3 - 上面将返回MailItem对象,它有一个名为Attachments的属性,所以你可以检查是否有任何

4 - 您当然可以尝试检查所有附件的扩展名并决定但我不确定您的意思是什么

5 - 当然,MailItem对象也有Body属性,因此您可以获取所有文本

可能困难的部分将保存为PDF我不知道如何做到这一点,如果它是图像