Полный останов в почтовом контенте рассматривается SMTP как последняя строка - PullRequest
3 голосов
/ 16 октября 2011

Я отправляю вводимые пользователем данные в текстовое поле в качестве содержимого электронной почты и отправляю их через сокет через SMTP.Я делаю это на Java.Однако, дело в том, что когда пользователь вводит данные, такие как ...

<CLRF>
.
<CLRF>
Other content blah blah blah...

SMTP принимает этот полный останов в качестве последней строки, а затем содержимое под ним не будет доставлено!Как я могу сообщить SMTP, что точка останова является частью содержимого электронного письма, а не указывает на то, что электронное письмо закончилось?

Ответы [ 2 ]

4 голосов
/ 16 октября 2011

Просто добавьте еще один период.

4.5.2 Прозрачность

   Without some provision for data transparency, the character sequence
   "<CRLF>.<CRLF>" ends the mail text and cannot be sent by the user.
   In general, users are not aware of such "forbidden" sequences.  To
   allow all user composed text to be transmitted transparently, the
   following procedures are used:

   -  Before sending a line of mail text, the SMTP client checks the
      first character of the line.  If it is a period, one additional
      period is inserted at the beginning of the line.

   -  When a line of mail text is received by the SMTP server, it checks
      the line.  If the line is composed of a single period, it is
      treated as the end of mail indicator.  If the first character is a
      period and there are other characters on the line, the first
      character is deleted.

Подробнее см. RFC 2821 .

.
3 голосов
/ 16 октября 2011

Раздел 4.5.2 из RFC 821 решает именно эту проблему:

Без некоторого обеспечения прозрачности данных последовательность символов "."заканчивает текст письма и не может быть отправлен пользователем.Как правило, пользователи не знают о таких «запрещенных» последовательностях.Для обеспечения прозрачной передачи всего текста, составленного пользователем, используются следующие процедуры:

  1. Перед отправкой текстового сообщения отправитель-SMTP проверяет первый символ строки.Если это период, один дополнительный период вставляется в начало строки.

  2. Когда SMTP-получатель получает строку почтового текста, он проверяет эту строку.Если строка состоит из одного периода, это конец письма.Если первый символ является точкой и в строке есть другие символы, первый символ удаляется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...