{Посылаем файл, расположенный на диске. Оставляем пустым параметр SendDoc InputData и определяем имя файла для InputFile для посылки содержимого файла, расположенного на диске. Для осуществления собственного кодирования (Base64, UUEncode и др.), вы можете использовать событие DocInput и методы GetData }
procedure TMainForm.SendFile(Filename: string);
begin
CreateHeaders;
with SMTP1 do begin
DocInput.Filename := FileName;
SendDoc(NoParam, DocInput.Headers, NoParam, DocInput.FileName, '');
end;
end;
{Событие DocInput возникает при каждом изменении состояния DocInput во время передачи почтового сообщения. DocInput хранит всю информацию о текущей передаче, включая заголовки, количество переданных байт и сами данные сообщения. Хотя в этом примере и не показано, для кодирования данных перед отправкой каждого блока вы можете вызвать метод DocInput SetData, если DocInput.State = icDocData. }
procedure TMainForm.SMTP1DocInput(Sender: TObject; const DocInput: Variant);
begin
case DocInput.State of
icDocBegin:
SMTPStatus.SimpleText := 'Начало передачи документа';
icDocHeaders:
SMTPStatus.SimpleText := 'Посылаем заголовки';
icDocData:
if DocInput.BytesTotal > 0 then
SMTPStatus.SimpleText:=
Format('Послано данных: %d из %d байт (%d%%)',
[Trunc(DocInput.BytesTransferred),
Trunc(DocInput.BytesTotal),
Trunc(DocInput.BytesTransferred/DocInput.BytesTotal*100)])
else SMTPStatus.SimpleText := 'Посылка...';
icDocEnd:
if SMTPError then SMTPStatus.SimpleText := 'Передача прервана'
else
SMTPStatus.SimpleText :=
Format('Почта послана %s (%d байт данных)',
[eTo.Text,Trunc(DocInput.BytesTransferred)]);
end;
SMTPStatus.Update;
end;
Объект DocOutput
Delphi 2
Тема: Объект DocOutput: свойства и методы
Объект DocOutput — объект из пакета Internet Solutions Pack фирмы NetManage, поставляемого в составе Delphi 2.01. Он описывает выходную информацию передаваемого документа. Все элементы управления, имеющие свойство DocOutput, используют этот тип. Он также является объектом, на который указывает событие DocOutput. Объект DocOutput имеет следующие свойства:
BytesTotal, BytesTransferred, DocLink, FileName, Headers, PushStreamMode, State и Suspend.
BytesTotal — счетчик общего количества байт передаваемого элемента. Значение по умолчанию и начальное значение равно нулю. Тип данных — Long. Данное свойство времени выполнения и только для чтения. Значение данного свойства получается из свойства заголовка "content-length" (длина содержимого). Это значение используется элементом управления для определения размера (объема) передаваемой информации. С помощью него также возможно управление буфером, который вы используете для "сборки" данных после их передачи.
Свойство BytesTranferred является свойством, передаваемым вам при наступлении события OnDocInput. Данное свойство времени выполнения, только для чтения и имеет тип long. При начале новой передачи значение свойства обнуляется. Обновляется в начале события OnDocInput. Значение данного свойства отражает величину последней передачи, когда другие передачи не осуществлялись. Свойство BytesTransferred может использоваться для показа линейки прогресса или для утверждения того, насколько фактически переданный размер соответствует ожидаемому.