SMTP:\r\n\r (без второго \n) в качестве двойной строки перевода

У меня есть парсер SMTP, который работает в основном отлично. Возникает проблема при получении трафика от стороннего программного обеспечения, которое отправляет двойные символы новой строки как "\ r\n\r" (без второго "\n" ). В настоящее время такие соединения прекращаются как несоответствующие SMTP. Может кто-нибудь объяснить, что именно RFC говорит о таких "смешных" двойных новостях? Могу ли я предположить, что программное обеспечение, которое отправляет такие данные, делает что-то действительно не так?

Ответ 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, то ошибка лежит на отправителе.