【发布时间】:2011-12-26 23:01:02
【问题描述】:
我正在使用 Java 执行 shell 命令(在 Windows 上)以打开默认邮件客户端。 mailto 命令有很多密件抄送电子邮件地址。
如果列表太长,只会显示部分地址。
我猜这是由于有关 Windows 中最大命令行长度的问题。
有人对我如何解决这个问题有任何想法吗?作为最后的手段,我可以将地址粘贴到剪贴板中,但恕我直言,这是一个肮脏的黑客攻击,任何更好的建议将不胜感激。
【问题讨论】:
我正在使用 Java 执行 shell 命令(在 Windows 上)以打开默认邮件客户端。 mailto 命令有很多密件抄送电子邮件地址。
如果列表太长,只会显示部分地址。
我猜这是由于有关 Windows 中最大命令行长度的问题。
有人对我如何解决这个问题有任何想法吗?作为最后的手段,我可以将地址粘贴到剪贴板中,但恕我直言,这是一个肮脏的黑客攻击,任何更好的建议将不胜感激。
【问题讨论】:
如果你想真正地“打开默认邮件客户端”——例如允许用户在发送之前修改消息——那么没有通用的解决方案。如果客户端程序可以从文件中读取地址列表 - 您可以创建该文件并将其作为参数传递;或者如果它可以从文件/stdin 中读取整个消息,并解析邮件头 - 你可以使用它。但这在很大程度上取决于特定客户端的功能,并且有点像 hack(而且显然不可移植)。 但是,如果您只需要发送邮件 - 请查看 Java Mail API;这应该能够处理很长的列表,因为实现了底层的邮件协议,没有调用操作系统命令。
【讨论】:
我有/有同样的问题,并使用一个函数将地址分割成可管理的块,然后一个接一个地发送。这应该可以,但我的问题是,只要第一个窗口仍然打开,我的邮件客户端就不会打开第二个窗口(请参阅Second `window.location = mailto:` fails as long as first one is still open)。你可以在那里找到我使用的代码,也许它对你有用......
【讨论】: