我想使用来自Pop3服务器的pop3
Tcl
个包来获取电子邮件。
我以这种方式进行
# Check Mail - a pop3 client
package require pop3
proc checkmail { _theHost _theUser _thePassword } {
set h [pop3::open -socketcmd tls::socket \
$_theHost $_theUser $_thePassword 995]
}
set _theHost "pop.gmail.com"
set _theUser "myusername" #My email is myusername@gmail.com
set _thePassword "mypassword"
checkmail $_theHost $_theUser $_thePassword
当我运行tclsh tclfile
时,它会显示
invalid command name "tls::socket"
while executing
"tls::socket pop.gmail.com 995"
("eval" body line emphasized text1)
invoked from within
"eval [linsert $cstate(socketcmd) end $host $port]"
(procedure "pop3::open" line 74)
invoked from within
"pop3::open -socketcmd tls::socket $_theHost $_theUser $_thePassword 995"
(procedure "checkmail" line 3)
invoked from within
"checkmail $_theHost $_theUser $_thePassword"
(file "connection.txt" line 20)
答案 0 :(得分:1)
pop3
软件包默认不包含对加密连接的支持;它知道如何使用它(即,它可以正确地调用tls::socket
),但由于这是由二进制包实现的,而你可能正在与未加密的系统进行通信,它&# 39;只是一种软依赖。
通过添加以下内容进行修复:
package require tls
在package require pop3
之前。并将tls
包添加到您的系统中,如果它尚未存在。
答案 1 :(得分:0)
2016年5月,Gmail POP3仿真服务器不再使用POP3(来自tcllib)/ tls软件包。
问题似乎是在openssl / tls版本级别:openssl v1.0.1k,tcllib v1.15,tls v1.6,tcl v8.6。
TLSv1选项默认为false,您必须启用它
package require tls
tls::init -ssl3 1 -tls1 1