有没有办法使用 C# 将 PST 文件导入 Outlook?
Is there a way to import PST files into Outlook using C#?
使用:Visual Studio 2017(语言:C#)
我在下面用 PowerShell 脚本编写了一个类似的函数,但我需要它的 C# 版本才能在单击 Visual Studio:
中的按钮时执行
Add-type -assembly "Microsoft.Office.Interop.Outlook" | out-null
$outlook = new-object -comobject outlook.application
$namespace = $outlook.GetNameSpace("MAPI")
dir “$env:userprofile\Documents\Outlook Files\*.pst” | % { $namespace.AddStore($_.FullName) }
任何见解或代码示例将不胜感激。
我不是 100% 确定如果没有额外的包是否可行。所以我只想执行一个 shell 命令来执行 powershell 脚本,因为你已经有了它。有点乱,但似乎是最简单的选择。
using System.Diagnostics;
Process.Start("powershell.exe " + scriptLocation);
您可以通过以下方式进行:
在您的项目中,右键单击 "References" 并添加对程序集 "Microsoft.Office.Interop.Outlook" 的引用。
那么你可以使用下面的代码:
/// <summary>
/// Get a reference to an already running or a newly started Outlook instance
/// </summary>
Microsoft.Office.Interop.Outlook.Application GetOutlookApp()
{
Microsoft.Office.Interop.Outlook.Application app = null;
// Try to get running instance
try
{
app = Marshal.GetActiveObject("Outlook.Application") as Microsoft.Office.Interop.Outlook.Application;
}
catch(Exception)
{
// Ignore exception when Outlook is not running
}
// When outlook was not running, try to start it
if(app == null)
{
app = new Microsoft.Office.Interop.Outlook.Application();
}
return app;
}
private void button1_Click(object sender, EventArgs e)
{
const string fileName = @"D:\MyDings.pst";
var app = GetOutlookApp();
var nameSpace = app.GetNamespace("MAPI");
nameSpace.AddStore(fileName);
MessageBox.Show("Done");
}
使用:Visual Studio 2017(语言:C#)
我在下面用 PowerShell 脚本编写了一个类似的函数,但我需要它的 C# 版本才能在单击 Visual Studio:
中的按钮时执行Add-type -assembly "Microsoft.Office.Interop.Outlook" | out-null
$outlook = new-object -comobject outlook.application
$namespace = $outlook.GetNameSpace("MAPI")
dir “$env:userprofile\Documents\Outlook Files\*.pst” | % { $namespace.AddStore($_.FullName) }
任何见解或代码示例将不胜感激。
我不是 100% 确定如果没有额外的包是否可行。所以我只想执行一个 shell 命令来执行 powershell 脚本,因为你已经有了它。有点乱,但似乎是最简单的选择。
using System.Diagnostics;
Process.Start("powershell.exe " + scriptLocation);
您可以通过以下方式进行:
在您的项目中,右键单击 "References" 并添加对程序集 "Microsoft.Office.Interop.Outlook" 的引用。
那么你可以使用下面的代码:
/// <summary>
/// Get a reference to an already running or a newly started Outlook instance
/// </summary>
Microsoft.Office.Interop.Outlook.Application GetOutlookApp()
{
Microsoft.Office.Interop.Outlook.Application app = null;
// Try to get running instance
try
{
app = Marshal.GetActiveObject("Outlook.Application") as Microsoft.Office.Interop.Outlook.Application;
}
catch(Exception)
{
// Ignore exception when Outlook is not running
}
// When outlook was not running, try to start it
if(app == null)
{
app = new Microsoft.Office.Interop.Outlook.Application();
}
return app;
}
private void button1_Click(object sender, EventArgs e)
{
const string fileName = @"D:\MyDings.pst";
var app = GetOutlookApp();
var nameSpace = app.GetNamespace("MAPI");
nameSpace.AddStore(fileName);
MessageBox.Show("Done");
}