解决 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";