отправка почты с помощью sendmail с вложением в Tcl

#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" .

Мистер Донал прав. Я сделал ту же ошибку, что и ваша. Спасибо, Донал. 🙂