You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Progress4GL中UNIX SILENT VALUE调用mail命令使用变量失败求助

解决Progress4GL中使用变量作为mail命令收件人的问题

问题分析

你遇到的报错Send options without primary recipient specified,本质是mail命令没接收到有效的收件人参数,两种写法各自存在问题:

  1. 第一种写法:字符串拼接缺少空格
    原代码里的字符串结尾是"New UI Report <noreply@rentokil-initial.com>"',直接拼接vEmailAdress后,最终生成的命令会变成:

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

    邮箱地址xyz.com和前面的-r参数值连在了一起,mail命令无法识别这是一个独立的收件人参数。

  2. 第二种写法:单引号字符串未解析变量
    Progress4GL不会解析单引号包裹的字符串里的变量名,所以mail命令收到的收件人参数是字面量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).

如果想让代码更易读和调试,可以先把完整的命令字符串存入一个变量,再执行:

DEFINE VARIABLE cFullMailCmd AS CHARACTER NO-UNDO.

cFullMailCmd = '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(cFullMailCmd).

额外提示

注意你的变量名拼写:vEmailAdress少了一个字母d,正确的拼写应该是vEmailAddress,虽然不影响当前功能,但规范命名能避免后续维护时的混淆。

内容的提问来源于stack exchange,提问作者rahul mukherjee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:01:01