У меня есть парсер SMTP, который работает в основном отлично. Возникает проблема при получении трафика от стороннего программного обеспечения, которое отправляет двойные символы новой строки как "\ r\n\r" (без второго "\n" ). В настоящее время такие соединения прекращаются как несоответствующие SMTP. Может кто-нибудь объяснить, что именно RFC говорит о таких "смешных" двойных новостях? Могу ли я предположить, что программное обеспечение, которое отправляет такие данные, делает что-то действительно не так?
SMTP:\r\n\r (без второго \n) в качестве двойной строки перевода
Ответ 1
RFC2821. Раздел 2.3.7:
Команды SMTP и, если они не изменены расширением службы, сообщение
данные передаются в "строках". Строки состоят из нуля или более данных
символы, прерванные последовательностью Символ ASCII "CR" (шестнадцатеричное значение 0D) а затем сразу ASCII символ "LF" (шестнадцатеричное значение 0A).
http://www.ietf.org/rfc/rfc2821.txt
- Дэйв
Ответ 2
Различные операционные системы имеют различные представления для символов Newline. Ознакомьтесь с инструкциями здесь для символов новой строки.. Кстати, распространенная практика среди программистов использовать как \n
, так и \r
вместе, чтобы предотвратить конфликты в системе. Вам нужно проверить, какой символ новой строки поддерживается вашей системой. Если его \r
, вы получаете оба обязательных символа. Но если его \n
, то ошибка лежит на отправителе.