【问题标题】:Expect Script Telnet email script期望脚本 Telnet 电子邮件脚本
【发布时间】:2013-01-19 15:44:19
【问题描述】:

尝试在 Windows 中使用 Expect Script 激活 TCL 以在每次运行时发送一封电子邮件。以下是我拥有的代码,但下面显示了一条错误消息,希望能提供有关如何避免该问题的任何帮助。谢谢。

#!/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)

关于这里有什么问题的任何想法????

【问题讨论】:

  • 显然,邮件服务器关闭了您的连接。您看到输出了吗,它没有说明为什么会断开连接吗? (另外我建议在发送任何内容之前等待它的 220... 横幅,或者至少睡一会)。

标签: windows tcl telnet expect


【解决方案1】:

我认为是因为远程主机关闭了连接,plink 退出了。

为什么不使用 tcllib 的 smtp 包? 它比通过 plink 和 expect 使用原始 smtp 更容易使用。

总结一下:您使用 plink 进行 telnet,您已经可以使用 tcl sockets 来做这件事。 您说的是 smtp,其中存在许多库,这使得使用它变得更加容易。

纯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

【讨论】:

  • 新的期望/TCL 脚本。我将如何使用 smtp 包完成我在上面尝试的内容?或者有没有办法避免它关闭?
  • 安装 tcllib,使用package require smtp 启动您的脚本,然后在wiki.tcl.tk/1256 上查看示例。
  • 要安装 tcllib,如果您在 *nix 系统上,只需使用您的数据包管理器安装 tcllib。在 Windows 上,如果你有 ActiveState 的 Tcl 发行版,你可以在命令行上执行 teacup install smtp 和 teacup install mime,或者从 SourceForge 下载并执行(默认值通常很好)。
  • 显示什么错误?第一行很重要。编辑:刚刚尝试了代码,对我有用。
  • 我猜他没有安装所需的软件包,没有配置安全或类似的东西......
猜你喜欢
  • 2018-02-15
  • 2014-11-13
  • 1970-01-01
  • 2017-07-31
  • 2012-10-16
  • 2011-12-09
  • 1970-01-01
  • 2013-04-04
相关资源
最近更新 更多