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

4

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

根据在Outlook中执行的搜索结果,您可以使用C#或ASP.Net实现将结果保存到本地驱动器的功能。具体实现方法因个人技能而异,您可以查找相关文档或向开发人员寻求帮助。

1
https://dev59.com/dHI95IYBdhLWcg3w_zas - ahaliav fox
谢谢您的回复。让我试试这个...请告诉我在Outlook中是否有任何附加组件来实现相同的功能。 - user829222
1个回答

3
您可以编写自己的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);
            }
        }
    }
}

它没有任何错误检查,也没有优化,但可以将消息保存到临时文件中,您可以了解基础知识。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接