【发布时间】:2014-09-25 18:03:55
【问题描述】:
我正在开发一个 Visual Studio 扩展,它向 VS 添加命令以在 Outlook 中编写带有附件的消息。附件是一个简单的 .csv 文件,也是由扩展程序生成的。 因此,当用户触发命令时,Outlook 会打开一个窗口,其中包含已编写的电子邮件并添加了附件。用户可能只是点击发送。
现在我被要求增加发送用 zip 压缩的日志的可能性。我想撰写带有已压缩附件的邮件,但我不希望在邮件发送(或取消)后保留任何临时 .zip 文件。我怎样才能做到这一点?
我编写邮件并打开 Outlook 窗口的代码:
using Microsoft.Office.Interop.Outlook;
...
private static bool TrySendMethod1(string subject, string toAddr, string body, string logPath)
{
try
{
Application app = new Application();
MailItem mailItem = app.CreateItem(OlItemType.olMailItem);
mailItem.Subject = subject;
mailItem.To = toAddr;
mailItem.Body = body;
if (logPath != null) mailItem.Attachments.Add(logPath);
mailItem.Importance = OlImportance.olImportanceNormal;
mailItem.Display(false);
return true;
}
catch (System.Exception e)
{
return false;
}
}
更新 撰写完电子邮件后,将显示一个带有撰写邮件的 Outlook 窗口(它已设置附件)。现在,用户可能只是发送它、取消它或其他什么。他甚至可能将窗口打开几个小时(尽管这并不常见)然后发送(即使在 VS 已关闭之后)。同样,在发送或取消消息后,我不希望磁盘上存在任何临时存档。
我添加了发送电子邮件的完整方法。仅此而已,但是当用户选择我的扩展添加到其中的新 Visual Studio 命令时才调用此方法(工具 -> 发送 TFS 日志 -> 从本月开始)。按钮处理程序之间只有一个附加方法,它只是为此处提供的参数设置一些参数(设置主题、logPath 等...)
如果不可能,那我也可以接受这样的回答。
【问题讨论】:
-
请添加更多代码。您实际上将邮件发送到哪里?因为这是您可以删除压缩文件的地方。
-
请看我更新的答案。
标签: c# outlook office-interop email-attachments vspackage