我有一个用于处理和发送电子邮件的脚本,但我需要消息中的正文而不创建文件,然后使用标准 MAIL 命令行插入文件。
我怎样才能做到这一点?
假设您要创建的正文是您可以写入 SYS$OUTPUT 的内容(例如命令过程或 DCL 命令的输出),那么您可以使用 DCL PIPE 将输出通过管道传输到 VMS 邮件中,例如:
$ PIPE write sys$output "The date is ", f$cvtime() | MAIL SYS$INPUT smith/SUBJ="Piping in DCL"
或者
$ PIPE DIR *.LOG | MAIL SYS$INPUT smith/SUBJ="Piping in DCL"
在 OpenVMS V7.1 中添加了 PIPE 命令。如果您使用的是 7.1 之前的系统,那么您唯一的选择就是写入临时文件并进行清理。
编辑:要回答评论,如果您想消除 Mail 命令中的交互式显示,您可以将 SYS$OUTPUT 重定向到 NLA0:,如下所示:
$ PIPE DIR *.LOG | MAIL SYS$INPUT smith/SUBJ="Piping in DCL" > NLA0:
错误消息转到 SYS$ERROR,因此您仍然会看到任何失败。请参阅帮助管道以获得更多好处。
让脚本创建一个临时文件来保存消息的正文。
邮件将接受命令行上的文本文件,例如用户列表和 /subj