Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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# Microsoft.Office.Interop.outlook不工作_C#_Vb.net_Visual Studio_Outlook - Fatal编程技术网

C# Microsoft.Office.Interop.outlook不工作

C# Microsoft.Office.Interop.outlook不工作,c#,vb.net,visual-studio,outlook,C#,Vb.net,Visual Studio,Outlook,我正在开发一个小项目,我需要能够从Outlook邮箱检索电子邮件,以便处理收到的电子邮件 我用VB.net中的一个旧程序用C重写了它。 对于Vb.net中的项目,我没有错误 但是我有以下错误:System.IO.FileNotFoundException:“无法加载文件或程序集”office,版本=15.0.0.0,区域性=中性,PublicKeyToken=71e9bce111e9429c”。在C项目中找不到指定的文件 我的推荐人: 当我将Microsoft.Office.Interop.

我正在开发一个小项目,我需要能够从Outlook邮箱检索电子邮件,以便处理收到的电子邮件

我用VB.net中的一个旧程序用C重写了它。 对于Vb.net中的项目,我没有错误

但是我有以下错误:System.IO.FileNotFoundException:“无法加载文件或程序集”office,版本=15.0.0.0,区域性=中性,PublicKeyToken=71e9bce111e9429c”。在C项目中找不到指定的文件

我的推荐人:

当我将Microsoft.Office.Interop.outlook库与Vb.net中安装的项目进行比较时,安装的版本完全相同,等等


因此,如果您有解决此问题的想法,我感兴趣:D

您可以尝试以下步骤来解决System.IO.FileNotFoundException问题

首先,您需要将当前框架更改为.NETCore3.0

其次,选择Interop.Microsoft.Office.Interop.Outlook,右键单击“属性”,并将“嵌入互操作类型”设置为“是”

最后,您可以使用以下代码从Outlook邮箱检索电子邮件

using Outlook = Microsoft.Office.Interop.Outlook;


            Outlook.Application oApp = null;
            oApp = new Outlook.Application();
            Outlook.NameSpace nameSpace = oApp.GetNamespace("MAPI");
            Outlook.Items items = null;
            try
            {
                // use default profile and DO NOT pop up a window
                // on some pc bill gates fails to login without the popup, then we must pop up and lets use choose profile and allow access
                nameSpace.Logon("", "", false, Missing.Value);
                var folder = nameSpace.Folders["emailaddress"].Folders["Folder"];
                items = folder.Items;
                foreach (Outlook.MailItem item in items)
                {
                        Console.WriteLine(item.Subject);
                }
                Console.WriteLine("yes");
                Console.ReadKey();
            }
            catch (Exception)
            {
                // use default profile and DO pop up a window
                nameSpace.Logon("", "", true, true);
            }

您正在使用M365邮箱吗?如果是的话,请不要进行互操作。在2020年,很少有理由使用Office interop。我正在使用Office 16。您正在使用Office 16,但尝试使用Office 15 dll?但是我添加了Microsoft Office interop Outlook 16。我在我的帖子中添加了一个屏幕截图,所以我想这是Office 16的好版本,或者我犯了一个错误?您可以参考此内容。此外,您可以尝试将True添加到csproj文件中。另请参阅。