python - 子进程长度限制

python - subprocess length limit

我必须从 python 脚本调用创建电子邮件:

subprocess.call([
    'thunderbird',
    '-compose',
    "preselectid='{}',to='{}',cc='{}',subject='{}',body='{}'".format(
        preselectid, to, cc, subject, body),
    ])

但是当 body 是 "too" 大时,电子邮件被截断。

我知道在 Windows 上有 32,768 个字符的限制(What is the subprocess.Popen max length of the args parameter?),但我在 Linux(使用 zsh)上并且当用 [= 回显字符串时16=]

subprocess.call([
    'echo',
    "preselectid='{}',to='{}',cc='{}',subject='{}',body='{}'".format(
        preselectid, to, cc, subject, body),
    ])

我得到了完整正确的邮件内容。

我该如何解决这个问题?

编辑: 感谢@slezica,我发现复制粘贴生成的电子邮件和 运行 来自命令行的命令,无论如何,截断的电子邮件(在 32,303 字符处)。 问题是 thunderbird.

这是准答案。

打开错误报告后 (https://bugzilla.mozilla.org/show_bug.cgi?id=1329312) 我被告知 Thunderbird 的开发人员

implemented an option where you can read the message from a file with message=, see bug 882104. That will be shipping in TB 52, so you could use this now in Earlybird.