Progress4GL .p 中的 UNIX SILENT VALUE 在尝试发送邮件时无法使用变量

UNIX SILENT VALUE in Progress4GL .p does not work with variables while trying to send a mail

我有一个 .p,我在其中贴标了一个变量,如下所示:

DEFINE VARIABLE vEmailAdress       AS CHARACTER NO-UNDO INITIAL "xyz.com".

在一些代码行之后,最后我打算邮寄一个我通过服务器某处的代码创建的 .csv。所以我使用了以下内容:

UNIX SILENT VALUE('echo "Please see attached report" | mail -s "Test email message" -a /path/to/report.csv -r "New UI Report <noreply@sample-mail.com>" xyz.com'). 

这个工作正常

当我尝试使用我声明的变量时,问题发生

UNIX SILENT VALUE('echo "Please see attached report" | mail -s "Test email message" -a /tmp/newuireport.csv -r "New UI Report <noreply@rentokil-initial.com>"' + vEmailAdress).

我也试过这样:

UNIX SILENT VALUE('echo "Please see attached report" | mail -s "Test email message" -a /tmp/newuireport.csv -r "New UI Report <noreply@rentokil-initial.com>" vEmailAdress').

我收到以下错误消息:

Send options without primary recipient specified.

请有人帮忙。

我认为您的问题可能是您的变量之前缺少 space。您可能还需要使用 "user@xyz.com" 而不仅仅是 "xyz.com"。我会这样写你的代码:

define variable emailAdress as character no-undo initial "user@xyz.com".
define variable cmd as character no-undo.

cmd = echo "Please see attached report" | mail -s "Test email message" -a /tmp/newuireport.csv -r "New UI Report <noreply@rentokil-initial.com>" &1'.

os-command silent value( substitute( cmd, emailAdress )).

请注意,主题文本末尾和“&1”之间有一个 space,我认为这很可能是您的原始代码出错的地方。

SUBSTITUTE 和 OS-COMMAND 的使用使您的代码更加灵活和可移植——它不再依赖于 UNIX 命令,如果您这样做,您可以很容易地用附加变量抽象命令文本就这样。

您可能认为您的代码永远不会 运行 在其他任何地方,但平台中立性不需要任何成本。使用 UNIX 会将您的代码显式绑定到 UNIX,没有充分的理由这样做。平台中立的 OS-* 语句已经在该语言中存在很长时间了。如果我没记错的话,至少是 v6。

我觉得你的第一种方法应该可行。但在我看来,您的 -r 末尾和电子邮件地址之间没有空格。

"New UI Report <noreply@rentokil-initial.com>"' + vEmailAdress).

这会导致 新 UI Reportxyz.com).

相反,尝试

"New UI Report <noreply@rentokil-initial.com>" ' + vEmailAdress).

希望对您有所帮助。

使用 SUBSTITUTE 命令.. 将 var v 定义为 char 不可撤消。 v = SUBSTITUTE('echo "Please see attached report" | mail -s "Test email message" -a /tmp/newuireport.csv -r "New UI Report " &1' vEmailAdress)。 UNIX 静默值 (v).

这对你有帮助。