我有SMTP解析器,作品大多正常。接收來自發送雙換行符爲「\ r \ n \ r」(不含第二個「\ n」)的第三方軟件的流量時出現問題。目前,這些連接被終止爲不兼容的SMTP。有人可以解釋一下RFC對於這種「有趣」的雙重換行符的評論嗎?我能否認爲發送這種數據的軟件正在做一些真正錯誤的事情?SMTP: r n r(無第二 n)的爲雙換行符
2
A
回答
5
RFC2821。第2.3.7節:
SMTP命令,除非通過一服務擴展改變 ,消息
數據,列在 「線」 被髮送。 行由零個或多個數據組成
由序列終止的字符 ASCII字符「CR」(十六進制值0D) 後面緊跟着ASCII 字符「LF」(十六進制值0A)。
http://www.ietf.org/rfc/rfc2821.txt
--Dave
-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
相關問題
- 1. PHP郵件中的換行符():\ n,\\ n和\ r \ n不工作
- 2. javascript,用\ r \ n替換\ n
- 3. 替換\ r \ n與\ n
- 4. 嘗試替換文件中的\ r \ n \ n但不是\ r \ n
- 5. 刪除\ r \ n \ r \ n
- 6. 刪除\ r \ n \ r \ n
- 7. 將\ r \ n替換爲「」
- 8. 說與\ n \ r換行符用Perl
- 9. JavaScript的轉換\ n至用\ r \ n
- 10. 爲什麼有雙\ r \ n,而不是在代碼\ r \ n的PY4E
- 11. PHP - 從此字符串中刪除「\ r \ n \ r \ n」的問題:「我想:\ r \ n \ r \ n1。)解決這個問題\ r \ n \ r \ n \ 2。)現在請「
- 12. R:第(n + 1)行第n行第m + 1列與第(n + 1)行第m列之間的日期差
- 13. 使用'\ r \ n \ r \ n'或'\ n \ n'結束HTTP請求
- 14. AsciiMath爲「N選R」
- 15. 在XML中保留原始換行符類型(\ r vs \ r \ n)
- 16. PHP:可以用\ n替換\ r \ n嗎?
- 17. 採用分體式用\ r \ n \ r \ n
- 18. 爲什麼Silverlight TextBox使用\ r作爲換行符而不是Environment.Newline(\ r \ n)?
- 19. 的Python:在列表中替換\ n \ r \噸不包括起始\ n \ n和與\ n \ r \ n \噸結束
- 20. \ r \ n \ r \ n字符串進入純文本
- 21. 用「\ n」代替「\ r \ n」
- 22. 運行json_encode後替換\ r \ n(換行符)
- 23. 擺脫\ r \ n字符串
- 24. R - 正則表達式 - 用一個替換多個\ r \ n(CRLF)\ r \ n
- 25. 在文件csv中導入表mysql,換新行,更好用\ n,\ r或\ r \ n?
- 26. 從R語言的字符「\ n 0.28 \ n \ n」中獲得編號
- 27. 替換\ r \ n使用XSLT和.NET的換行符VS 2008
- 28. Vim:\ n與\ r
- 29. 是新行= \或OR \ r \ n?
- 30. Uncaught SyntaxError:無效的正則表達式:/(/ *([^ *] | [\ r \ n] |(* +([^ * /] | [\ r \ n])))** + /)| (//.*)/:無法重複
RFC後來說:「SMTP客戶端實現不能發送這些字符時,他們旨在作爲行終止除,然後必須,如上文所述,發送它們僅作爲序列」。由於RFC明確要求我認爲可以安全地假設理解的應用程序不需要使用發送數據。我仍然沒有看到應用以有趣的方式發送換行符的理由。 –
Muxecoid
2011-05-30 06:14:00