Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用c将Outlook电子邮件自动保存到文件夹#_C#_Asp.net_Outlook - Fatal编程技术网

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

C# 使用c将Outlook电子邮件自动保存到文件夹#,c#,asp.net,outlook,C#,Asp.net,Outlook,根据在Outlook中执行的搜索,我想将结果保存到本地驱动器 我怎样才能继续? 在C#或ASP.Net中有什么方法可以实现它吗? 非常感谢。您可以编写自己的Outlook插件来完成这项工作 启动Visual Studio,创建新的Outlook加载项。根据您的VisualStudio和Office版本,可能您必须安装VS Tools for Office Runtime(如果我没记错的话) 在启动时,为Application.ItemContextMenuDisplay注册一个处理程序,并在事件

根据在Outlook中执行的搜索,我想将结果保存到本地驱动器 我怎样才能继续? 在C#或ASP.Net中有什么方法可以实现它吗?
非常感谢。

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

启动Visual Studio,创建新的Outlook加载项。根据您的VisualStudio和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);
            }
        }
    }
}
使用Office=Microsoft.Office.Core;
使用Outlook=Microsoft.Office.Interop.Outlook;
私有void MyAddIn_启动(对象发送方,System.EventArgs e)
{
Office.CommandBarButton bts=(Office.CommandBarButton)CommandBar.Controls.Add();
bts.Visible=true;
bts.Caption=“将所选邮件保存到磁盘”;
bts.Click+=新建办公室。\ u命令按钮事件\ u单击事件处理程序(bts\u单击);
}
专用无效bts_单击(Office.CommandBarButton Ctrl,ref bool CancelDefault)
{
Outlook.Selection list=this.Application.ActiveExplorer().Selection;
字符串fileName=“”;
对象选择对象;
Outlook.MailItem邮件项目;
对于(int i=1;i
它没有任何错误检查,没有优化,这将消息保存到一个临时文件中,但您可以获得基本信息


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

谢谢您的回复。让我试试这个。。请让我知道outlook中是否有任何附加组件可以实现相同的功能