[英]Is it possible to save a PDF attachment back to an email in Outlook?
[英]PDF Outlook Email attachment sometimes saved with no permissions
循环浏览Outlook邮件存储中的邮件(getItem对象),并使用以下代码将附件另存为文件:
try
{
foreach (Outlook.Attachment attach in getItem.Attachments)
{
if (attach.FileName == sItemName)
{
string sSaveFile = Path.GetTempPath() + "Attachment" + sItemType;
if (System.IO.File.Exists(sSaveFile)) System.IO.File.Delete(sSaveFile);
attach.SaveAsFile(sSaveFile);
sContent = Common.GetFileContent2(sSaveFile);
}
}
}
catch (Exception Ex)
{
Common.LogError("GetUpdated", Ex, "Get text from Email attachment", "Error", false);
}
System.Runtime.InteropServices.Marshal.ReleaseComObject(getItem.Attachments);
我发现,当另一个PDF文件出现时,提取的PDF文件有时无法删除。 无法在资源管理器中查看提取的PDF文件的文件权限-属性的“安全性”选项卡显示“您必须具有读取权限才能查看该对象的属性”。 常规属性选项卡可以阅读确定。
我在Windows 8.1中使用Outlook 2007
我建议从检查代码开始并立即释放所有基础COM对象。 使用完后,使用System.Runtime.InteropServices.Marshal.ReleaseComObject释放Outlook对象。 如果您的加载项尝试枚举Microsoft Exchange Server上存储的集合中的256个以上Outlook项目,则这尤其重要。 如果不及时释放这些对象,则可以达到Exchange对任何一次打开的最大项目数施加的限制。 然后在Visual Basic中将变量设置为Nothing(在C#中为null)以释放对该对象的引用。 您可以在MSDN中的“ 系统释放对象”文章中了解有关此内容的更多信息。
例如:
foreach (Outlook.Attachment attach in getItem.Attachments)
Attachments属性返回Attachments类的实例,该实例应在之后释放。 另外,Attachment类的每个实例都保持活动状态,直到方法结束并运行GC。
最后,我建议改为使用for循环。 因此,您将能够立即释放每个对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.