我遇到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>
在执行Listener(475)中执行:USOCKET :: RAISE-ERROR-FROM-ID。
奇怪的是,同样的函数调用已经在其他机器上运行了,但是在我当前的mac笔记本电脑或者我一直在使用的基于云的mac上都没有。
我在OS 10.13.3上的MacBook Pro上运行Clozure Common Lisp 1.11.1
以下是回溯FYI的快照:https://imgur.com/a/e2xcf
有什么想法吗?任何帮助将不胜感激。
答案 0 :(得分:0)
由于您使用的是外部服务器,首先需要检查地址的正确性(使用telnet连接),端口以及可能需要身份验证。 由于您使用的是cl-smtp,我首先建议您测试它是如何工作的,因为测试smptp的简单方法是在docker容器中使用mailcatcher:
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
然后,您可以在网络浏览器localhost:1080中访问该ourtgoing邮件,并将邮件发送到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
有一篇关于here
的精彩文章如果您确定,您可以尝试使用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")