#tcl #sendmail
#tcl #отправка почты
Вопрос:
Привет, я пытаюсь отправить почту с помощью sendmail
Tcl с вложением.
Это мой код следующим образом,
set mail_ids "dinesh@mydomain.com"
set msg {From: dinesh}
set timestamp [ clock format [clock seconds] -format {%d-%m-%Y-at-%HH-%MM-%Ss} ]
append msg n "To:$mail_ids"
append msg n "Subject: $subject"
append msg n "Hi,nPlease find the report generated on $timestamp.n"
append msg n "nAuto-generated email via scriptn"
append msg [ exec cat db.config | uuencode db.config ]
#append msg $report
puts "Sending mail now ..... "
exec /usr/lib/sendmail -oi -t << $msg
puts "Mail sent."
Во время выполнения этого я получаю следующую ошибку
wrong # args: should be "exec handle cmd"
while executing
"exec cat db.config | uuencode db.config "
invoked from within
"append msg [ exec cat db.config | uuencode db.config ]"
(file "./my_script" line 478)
У меня есть файл ‘db.config’ в текущем каталоге, в котором запущен скрипт.
Какую ошибку я здесь совершаю?
Заранее спасибо.
Комментарии:
1. Это странно; вы используете правильный синтаксис Tcl. Я предполагаю, что что-то перезаписало
exec
команду в этом интерпретаторе с нестандартной реализацией. (Я помнюopen
, как давным-давно создал образ с именем и задавался вопросом, почему мои обращения к файлам начали завершаться сбоями … ☺)2. Что мы можем сделать здесь, чтобы преодолеть эту проблему, Дональд?
Ответ №1:
Попробуйте заменить:
append msg [ exec cat db.config | uuencode db.config ]
С:
append msg [ exec uuencode db.config db.config ]
Ответ №2:
Я допустил ошибку в своем коде. У меня была одна процедура с именем ‘exec’ с 2 аргументами, и я обнаружил, что код
exec /usr/lib/sendmail -oi -t << $msg
вызывает определяемый пользователем процесс ‘exec’, а не tcl exec
, поэтому он выдает ошибку as wrong # args: should be "exec handle cmd"
.
Мистер Донал прав. Я сделал ту же ошибку, что и ваша. Спасибо, Донал. 🙂