[英]Trying to send email automatically of a Google Docs created through apps script
[英]Trying to send an email through a groovy shell script
今天,我试图用普通的脚本替换bash脚本。 一切运行顺利,我设法使用execute()
命令调用其他命令。
然后,我试图发送包含主题的电子邮件:
mail -s "this is a test" my.mail@example.com < mail.tmp
转换成
'mail -s "this is a test" my.mail@example.com < mail.tmp'.execute()
这是行不通的,因为groovy会将一个参数"this is a test"
拆分为四个参数"this
is
a
test"
。
到现在为止还挺好。 Google帮我把它变成了
['mail', '-s', "this is a test", 'my.mail@example.com', '<', 'mail.tmp'].execute()
现在,主题被识别为一个参数,但是<
也被识别为参数,而不是文件重定向。
知道我该如何解决吗?
PS:不,我不希望使用Java代码发送邮件,因为我认为代码会更复杂。 但是,如果您有Java一线客,欢迎您...
您将不得不处理将流程的输出写入文件...
new File('mail.tmp').withWriter { it << """mail -s "this is a test" my.mail@example.com""".execute().getText() }
我仅在上面使用“ ls -al”作为命令进行了测试,它是否按预期工作,我不确定是否需要更长的运行进程来调整您的处理方式,如果可能,则可能需要使用waitForProcessOutput :
new File('mail.tmp').withWriter { """mail -s "this is a test" my.mail@example.com""".execute().waitForProcessOutput(it, it) }
找到了另一种对我来说看起来更容易的解决方案,但我想它不如@chrixian提供的解决方案那么干净:
['sh','-c','mail -s "this is a test" my.mail@example.com < mail.tmp'].execute()
该命令创建另一个外壳程序以执行mail命令。 这样,shell会解释'mail -s "this is a test" my.mail@example.com < mail.tmp'
,它知道如何正确处理参数和<
符号。
缺点:它适用于* nix系统。 对于Windows系统,shell以不同的方式执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.