解决 Process.Start() 个字符的限制
Solve Limit on Process.Start() characters
我正在尝试将多个电子邮件地址传递到我的邮件客户端(尝试了 Thunderbird 和 Windows 10s 集成邮件应用程序)。不幸的是,Process.Start() 命令似乎有限制(~2000 个字符)。这是我用 visual studio 编写的简单测试代码作为 WPF 应用程序:
private void Button_Click(object sender, RoutedEventArgs e)
{
string mail = "mailto:test@test.com?subject=BlaBla&bcc=";
for (int i = 0; i < 1000; i++)
{
mail = mail + "test@test.com" + i + ",";
}
Process.Start("mailto: "+mail);
}
它在第 125 个地址之前工作正常,而在我的测试中它应该通过 1000 个地址。
是否有解决方法或完全不同的解决方案来解决我的问题?
谢谢!
我用 "ProcessStartInfo" 的 "UseShellExecute = false;" 选项解决了这个问题。这会调用 createprocess(),它允许在命令行中使用 32767 个字符。我读到这不是最佳做法,但对我有用。
您必须提供停用 UseShellExecute 的完整路径,例如:
string mail = Environment.GetEnvironmentVariable("ProgramFiles(x86)") + "\Mozilla Thunderbird\thunderbird.exe";
我正在尝试将多个电子邮件地址传递到我的邮件客户端(尝试了 Thunderbird 和 Windows 10s 集成邮件应用程序)。不幸的是,Process.Start() 命令似乎有限制(~2000 个字符)。这是我用 visual studio 编写的简单测试代码作为 WPF 应用程序:
private void Button_Click(object sender, RoutedEventArgs e)
{
string mail = "mailto:test@test.com?subject=BlaBla&bcc=";
for (int i = 0; i < 1000; i++)
{
mail = mail + "test@test.com" + i + ",";
}
Process.Start("mailto: "+mail);
}
它在第 125 个地址之前工作正常,而在我的测试中它应该通过 1000 个地址。 是否有解决方法或完全不同的解决方案来解决我的问题? 谢谢!
我用 "ProcessStartInfo" 的 "UseShellExecute = false;" 选项解决了这个问题。这会调用 createprocess(),它允许在命令行中使用 32767 个字符。我读到这不是最佳做法,但对我有用。 您必须提供停用 UseShellExecute 的完整路径,例如:
string mail = Environment.GetEnvironmentVariable("ProgramFiles(x86)") + "\Mozilla Thunderbird\thunderbird.exe";