尝试使用Windows中的Active TCL Expect Script在每次运行时发送电子邮件。下面是我的代码,但下面显示了一条错误消息,并希望了解如何避免此问题的任何帮助。谢谢。
#!/usr/bin/expect
# \
exec tclsh "$0" ${1+"$@"}
package require Expect
spawn plink -telnet IP PORT
send "ehlo *******.com\r";
send "AUTH LOGIN\r";
expect "334 VXNlcm5hbWU6" sleep .1;
send "*************\r";
sleep .1;
expect "334 UGFzc3dvcmQ6\r"
send "********\r";
sleep .1;
expect "235 Authentication succeeded\r";
send "MAIL from:******@*******.com\r";
expect "250 OK\r"
send "RCPT to:********@*********.com\r";
expect "250 Accepted\r"
send "DATA\r";
send "!!!TEXT HERE!!!\r";
send ".\r";
send "QUIT\r";
exit
收到错误:
Error in startup script
send: spawn id exp2 not open
while executing
"send "MAIL from:*****@******.com\r""
(file "***.tcl" line 16)
关于这里有什么问题的任何想法????
答案 0 :(得分:5)
我认为因为远程主机关闭了连接而plink退出了。
为什么不使用tcllib的smtp
包?
它比使用期望在plink上使用原始smtp更容易使用。
总结一下:你使用plink作为telnet,你可以用tcl socket
来做。
你说的是smtp,存在许多libs使得使用它更容易。
使用纯tcl发送邮件的示例:
package require mime
package require smtp
set tok [::mime::initialize \
-canonical text/plain \
-header {From sender@address.example.com} \
-string {Some Text Here}]
::smtp::sendmessage $tok \
-servers IP \
-ports PORT \
-username ****** \
-password ****** \
-recipients recipient@address.example.com \
-originator sender@address.example.com
::mime::finalize $tok