
BDAT SP chunk-size [ SP end-marker ] <CR><LF>
Параметр chunk-size – количество байт, которые будут переданы после
команды BDAT, необязательный end-marker может принимать только одно
значение – LAST. Рассмотрим использование команды BDAT. После того, как
клиентом поданы команды MAIL и RCPT, клиент вместо команды DATA подает
серверу команду BDAT, указывая после пробела количество байт тела письма,
которые последуют за командой BDAT. После того, как это количество байт
передано клиентом, сервер возвращает клиенту сообщение о том, что
оговоренное количество байт принято и … ожидает следующей команды BDAT.
Дело в том, что передача оговоренного количества байт еще не приводит к тому,
что письмо окончено – возможно, у почтового клиента (или скорее у
пользователя, создающего письмо в терминале) возникнет потребность передать
еще данные, принадлежащие этому же письму. Поэтому для того, чтобы
показать, что письмо (а не его часть) действительно окончено, необходимо
подать команду BDAT с аргументом LAST. Когда сервер получает команду BDAT с
аргументом LAST, он принимает от клиента оговоренное в аргументе команды
BDAT количество байт и считает, что конец письма достигнут. Если отправитель
передал несколько (или одну) команду BDAT без параметра LAST, и на этом
решил закончить письмо, он может передать команду BDAT 0 LAST, что будет
означать, что письмо закончено. Рассмотрим использование команды BDAT, при
подключении терминалом telnet.exe к почтовому серверу:
C:\>telnet 192.168.0.89 25
220 WIN2008.smile.com Microsoft ESMTP MAIL Service, Version: 5.0.2195.6713 ready
at Sat, 25 Dec 2004 14:55:38 +0200
ehlo caesar
250-WIN2008.smile.com Hello [192.168.0.199]
250-AUTH GSSAPI NTLM LOGIN
250-AUTH=LOGIN
250-TURN
250-ATRN
250-SIZE 2097152
250-ETRN
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-8bitmime
250-BINARYMIME
250-CHUNKING
250-VRFY
250 OK
mail from: kalashnikoff@itstep.org
250 2.1.0 kalashnikoff@itstep.org....Sender OK
rcpt to: kalashnikoff@mail.ru
250 2.1.5 kalashnikoff@mail.ru
bdat 5
hello250 CHUNK received OK, 5 Octets
bdat 3
wow250 CHUNK received OK, 3 Octets
bdat 2 last
hi250 2.6.0 <WIN2008C6hnVQtp2T9eC00000002@WIN2008.smile.com> Queued mail for delivery
mail from:kalashnikoff@itstep.org
250 2.1.0 kalashnikoff@itstep.org....Sender OK
rcpt to: kalashnikoff@mail.ru
250 2.1.5 kalashnikoff@mail.ru
bdat 5 last
hello250 2.6.0 <WIN200826blindRi56LK00000003@WIN2008.smile.com> Queued mail for delivery
quit
221 2.0.0 WIN2008.smile.com Service closing transmission channel