UNIX SILENT VALUE в Progress4GL .p не работает с переменными при попытке отправить почту - PullRequest
0 голосов
/ 16 мая 2018

У меня есть файл .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.

Пожалуйста, кто-нибудь может помочь.

Ответы [ 3 ]

0 голосов
/ 16 мая 2018

Мне кажется, ваш первый подход должен сработать. Но мне кажется, что между концом -r и адресом электронной почты нет пробелов.

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

Это приведет к Новый пользовательский интерфейс Reportxyz.com).

Вместо этого попробуйте

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

Надеюсь, это поможет.

0 голосов
/ 16 мая 2018

Используйте команду SUBSTITUTE. Определите var v как char no-undo.v = SUBSTITUTE ('echo "Пожалуйста, смотрите прикрепленный отчет" | mail -s "Тестовое электронное сообщение" -a /tmp/newuireport.csv -r "Отчет о новом пользовательском интерфейсе" & 1' vEmailAdress).UNIX SILENT VALUE (v).

Это поможет вам.

0 голосов
/ 16 мая 2018

Я полагаю, что вашей проблемой, вероятно, является отсутствие пробела перед вашей переменной.Вы, вероятно, также должны использовать «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" есть пробел. Я думаю, что, скорее всего, ваш исходный код пойдет не так.

Использование SUBSTITUTE и OS-COMMAND делает ваш код более гибким и переносимым - он больше не привязан к команде UNIX, и вы можете довольно легко абстрагировать текст команды с помощью дополнительных переменных, если вы делаете это таким образом.

Вы можете подумать, что ваш код никогда не будет выполняться где-либо еще, но ничего не стоит быть платформенно-нейтральным.Использование UNIX явно связывает ваш код с UNIX, и для этого нет веских причин.Нейтральные по отношению к платформе операторы OS- * существуют на языке уже очень давно.По крайней мере, с v6, если я правильно помню.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...