关于是否需要针对每行建立一个新连接,OP的问题不太清楚。但是根据OP在这里的评论,我认为他们的需求与我的不同。然而,谷歌会将有相似需求的人引导到这里,所以我会在这里提供另一种选择。
我需要通过单一连接逐行发送文件。基本上,这就是一个“慢”的cat
。(这将是许多“交流”协议的共同需求。)
如果我尝试使用nc
将电子邮件消息传送给cat
,我会因为服务器无法与我进行“交流”而出现错误。
$ cat email_msg.txt | nc localhost 25
554 SMTP synchronization error
现在,如果我将一个slowcat
插入管道中,就可以收到电子邮件。
$ function slowcat(){ while read; do sleep .05; echo "$REPLY"; done; }
$ cat email_msg.txt | slowcat | nc localhost 25
220 et3 ESMTP Exim 4.89 Fri, 27 Oct 2017 06:18:14 +0000
250 et3 Hello localhost [::1]
250 OK
250 Accepted
354 Enter message, ending with "." on a line by itself
250 OK id=1e7xyA-0000m6-VR
221 et3 closing connection
email_msg.txt
看起来像这样:
$ cat email_msg.txt
HELO localhost
MAIL FROM:<system@example.com>
RCPT TO:<bbronosky@example.com>
DATA
From: [IES] <system@example.com>
To: <bbronosky@example.com>
Date: Fri, 27 Oct 2017 06:14:11 +0000
Subject: Test Message
Hi there! This is supposed to be a real email...
Have a good day!
-- System
.
QUIT