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).
这对你有帮助。
我有一个 .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).
这对你有帮助。