我在使用cl-smtp:send-email时遇到了问题,这似乎是由于调用usocket:socket-connect时出现了超时错误。
以下是我要做的事:
(cl-smtp:send-email "outgoing.mit.edu" "m_klein@mit.edu"
(list "m_klein@mit.edu") "s1" "m1”)这似乎是发生故障的调用(根据回溯):
(usocket:socket-connect "outgoing.mit.edu" 25
:protocol :stream
:element-type '(unsigned-byte 8)
:timeout nil
:deadline nil
:nodelay nil
:local-host nil
:local-port nil)以下是错误:
错误:错误
#<USOCKET:TIMEOUT-ERROR #x302001E5FDED>在执行时:USOCKET::引发-错误从-ID,进程侦听器(475)。
奇怪的是,相同的函数调用在其他机器上也能工作,但在我目前的mac笔记本电脑或我也一直在使用的基于云的mac上却不起作用。
我在OS10.13.3上的MacBook Pro上运行ClozureCommonLisp1.11.1
下面是回溯FYI:https://imgur.com/a/e2xcf的快照
有什么想法吗?任何帮助都将不胜感激。
发布于 2018-03-07 08:00:26
由于您使用的是外部服务器,首先需要检查地址的正确性(使用telnet连接)、端口,可能还需要进行身份验证。由于您正在使用cl,所以首先我建议您测试它的工作方式,因为测试smptp的简单方法是在码头容器中使用邮件捕获器:
docker run -d -p 1080:1080 -p 1025:1025 --name mailcatcher schickling/mailcatcher
docker ps | grep mailcatcher
6fb056fceb6b schickling/mailcatcher "mailcatcher -f --ip…" 9 months ago Up 18 minutes 0.0.0.0:1025->1025/tcp, 0.0.0.0:1080->1080/tcp mailcatcher然后您可以在web浏览器localhost:1080中访问我们正在发送的邮件,并将邮件发送到localhost:1025。
为了测试SMTP,我建议服务器使用telnet:
telnet
telnet> o localhost 1025
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 EventMachine SMTP Server
EHLO localhost
250-Ok EventMachine SMTP Server
250-NO-SOLICITING
250 SIZE 20000000关于那个这里有一篇很棒的文章
当您确信这一点时,您可以使用lisp尝试获得这些需求:
CL-USER> (cl-smtp:send-email "127.0.0.1" "antonio.querol@example.com" "pedro.lopez@example.com" "Say Hello" "Hello World"
:port 1025)
("Ok")

https://stackoverflow.com/questions/49041560
复制相似问题