繁体   English   中英

了解SMTP中电子邮件的传输结束

[英]Understand end of transmission of email message in SMTP

我有一个简单的SMTP交易记录。 (它有点长,所以在这里访问它)。 它显示了诸如HELOMAIL等低级握手的交换。

当本应接收电子邮件的服务器准备好接受电子邮件数据时,它将发送以下内容(日志中的第12行):

RawSmtp Information: 0 : << 354 Start mail input; end with <CRLF>.<CRLF>

但是,传输结束有点混乱(第74/75行):

RawSmtp Information: 0 : >> cannot foresee
RawSmtp Information: 0 : >> 
RawSmtp Information: 0 : << 250 OK

在记事本中查看时,其外观如下:

在此处输入图片说明

但是,代码只是这样写的:

                            WriteResponse(writer, "354 Start mail input; end with <CRLF>.<CRLF>");
                            string line;
                            while ((line = reader.ReadLine()) != null && line != ".")
                            {
                                //do stuff
                            }

那是标准吗? 我的意思是发送类似<CRLF>.<CRLF>并且仅检查点( . )...?

它只检查一个整行. 在里面。 这是指示DATA节结束的标准技术。 这里

另外,正如@jstedfast指出的那样, StreamReader.ReadLine()方法从其返回的字符串中删除"\\r\\n"行尾序列,因此在这种情况下,结果字符串将为"."

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM