Progress4GL.p中的UNIX静默值在尝试发送邮件时不适用于变量

Progress4GL.p中的UNIX静默值在尝试发送邮件时不适用于变量,unix,openedge,progress-4gl,Unix,Openedge,Progress 4gl,我有一个.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/repor

我有一个.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'). 

请找人帮忙。

我认为您的问题可能是变量前缺少空格。您可能还需要使用“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 )).
将变量emailAddress定义为字符no undo initial”user@xyz.com".
将变量cmd定义为字符no undo。
cmd=echo“请参阅附件报告”| mail-s“测试电子邮件”-a/tmp/newuireport.csv-r“新用户界面报告”&1“。
os命令静默值(替换(cmd,emailAddress))。
请注意,主题文本的结尾和“&1”之间有一个空格,我认为这可能是您的原始代码出错的地方

使用替换和OS-COMMAND使代码更加灵活和可移植——它不再与UNIX命令绑定,如果这样做,您可以很容易地用附加变量抽象命令文本


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

我觉得您的第一种方法应该能奏效。但在我看来,您的-r结尾和电子邮件地址之间似乎没有空格

"New UI Report <noreply@rentokil-initial.com>"' + vEmailAdress).
“新UI报告”+veMailAddress)。
这将导致 新用户界面报告(xyz.com)

相反,试试看

"New UI Report <noreply@rentokil-initial.com>" ' + vEmailAdress).
“新UI报告”+veMailAddress)。

希望有帮助。

使用替换命令。。 Def var v作为字符不撤消。 v=替换('echo“请参阅附件报告”| mail-s“测试电子邮件”-a/tmp/newuireport.csv-r“新用户界面报告”&1'vemailaddress)。 UNIX静默值(v)


这将对您有所帮助。

您在“vEmailAddress”之前缺少一个逗号。我单击了您评论左侧的勾号和向上箭头
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 )).
"New UI Report <noreply@rentokil-initial.com>"' + vEmailAdress).
"New UI Report <noreply@rentokil-initial.com>" ' + vEmailAdress).