【发布时间】:2015-05-08 04:55:51
【问题描述】:
使用以下代码循环浏览 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
【问题讨论】:
-
代码中使用的是什么文件路径?您是否使用管理员权限运行 Outlook?
-
保存文件夹的路径是用户Temp目录,即C:\User\AppData\Local\Temp。我已尝试按照其他有类似问题的人的建议重新安装 Office,但没有成功。 Outlook 未以任何权限运行。它使用
Outlook.Application myApp = new Outlook.Application(); Outlook.NameSpace mapiNameSpace = myApp.GetNamespace("MAPI");调用。删除文件失败时没有可辨别的模式,并且仅发生在 PDF 中。大约 90 秒后,未经许可的 PDFS 消失 -
我没有在代码中看到任何奇怪的东西。尝试在另一台 PC 上运行它。你得到相同的结果吗?有问题的 PC 上是否有任何防病毒软件?
-
我有 Windows Defender (MsMpEng.exe) 作为 AV/反恶意软件。在另一台 PC 上运行很难,因为我在一台机器上只有 Visual Studio,但在另一台机器上运行的其他可执行文件(Win 7、Office 2010)没有显示任何问题
-
很可能您的系统在某些方面已损坏。因为我无法在装有 Windows 8.1 的 PC 上重现该问题。您是否在 Outlook 2007 中安装了最新的更新和服务包?
标签: c# pdf outlook email-attachments