2011-05-29 215 views
2

我有SMTP解析器,作品大多正常。接收來自發送雙換行符爲「\ r \ n \ r」(不含第二個「\ n」)的第三方軟件的流量時出現問題。目前,這些連接被終止爲不兼容的SMTP。有人可以解釋一下RFC對於這種「有趣」的雙重換行符的評論嗎?我能否認爲發送這種數據的軟件正在做一些真正錯誤的事情?SMTP: r n r(無第二 n)的爲雙換行符

回答

5

RFC2821。第2.3.7節:

SMTP命令,除非通過一服務擴展改變 ,消息
數據,列在 「線」 被髮送。 行由零個或多個數據組成
由序列終止的字符 ASCII字符「CR」(十六進制值0D) 後面緊跟着ASCII 字符「LF」(十六進制值0A)。

http://www.ietf.org/rfc/rfc2821.txt

--Dave

+1

RFC後來說:「SMTP客戶端實現不能發送這些字符時,他們旨在作爲行終止除,然後必須,如上文所述,發送它們僅作爲序列」。由於RFC明確要求我認爲可以安全地假設理解的應用程序不需要使用發送數據。我仍然沒有看到應用以有趣的方式發送換行符的理由。 – Muxecoid 2011-05-30 06:14:00

-2

各種操作系統對換行符各種表示。檢查instructions here on newline characters.。順便提一下它的程序員的一個常見的做法是同時使用\n\r在一起以防止系統上的任何衝突。你需要檢查你的系統支持哪一個換行符。如果它的\r那麼你將得到所需的兩個字符。但如果它的\n,那麼錯誤在於發件人。

+0

我看過前問維基百科,這就是爲什麼我問。我可以看到接受\ n \ n和\ r \ r和\ r \ n \ r \ n爲雙換行符的原因,但\ r \ n \ r看起來很奇怪。首先你使用Windows換行符,然後使用MacOS9換行符。 「\ r \ n \ r」的問題是你不知道有多少換行符。三?二? 1個半? – Muxecoid 2011-05-29 11:56:00

相關問題