使用c#自动将Outlook电子邮件保存到文件夹

时间:2012-05-30 12:29:42

标签: c# asp.net outlook

基于Outlook中执行的搜索我想将结果保存到本地驱动器中 我该怎么办? 在C#或ASP.Net中有没有办法实现它? 非常感谢。

1 个答案:

答案 0 :(得分:2)

您可以编写自己的Outlook插件来完成这项工作。

启动Visual Studio,创建一个新的Outlook加载项。根据您的Visual Studio和Office版本,您可能必须安装VS Tools for Office Runtime(如果我没记错的话)。

在启动时注册Application.ItemContextMenuDisplay的处理程序,并在事件处理程序中添加一个新的菜单项,让我们说“将消息保存到磁盘”,另外创建一个事件处理程序,获取所选消息并将其保存到某个地方。

这样的事情:

using Office = Microsoft.Office.Core;
using Outlook = Microsoft.Office.Interop.Outlook;

private void MyAddIn_Startup(object sender, System.EventArgs e)
{
    Office.CommandBarButton bts = (Office.CommandBarButton)CommandBar.Controls.Add();
    bts.Visible = true;
    bts.Caption = "Save selected messages to disk";
    bts.Click += new Office._CommandBarButtonEvents_ClickEventHandler(bts_Click);
}

private void bts_Click(Office.CommandBarButton Ctrl, ref bool CancelDefault)
{
    Outlook.Selection list = this.Application.ActiveExplorer().Selection;

    string fileName = "";

    Object selObject;
    Outlook.MailItem mailItem;

    for (int i = 1; i < list.Count + 1; i++)
    {
        selObject = this.Application.ActiveExplorer().Selection[i];

        if (selObject is Outlook.MailItem)
        {
            mailItem = (selObject as Outlook.MailItem);

            if (mailItem != null)
            {
                fileName = Path.GetTempFileName();
                mailItem.SaveAs(fileName, Outlook.OlSaveAsType.olMSG);
            }
        }
    }
}

它没有任何错误检查,没有优化,这会将消息保存到临时文件,但您可以获得基础知识。

它也不是自动保存,但您必须选择消息,右键单击并选择新的菜单项。