Максимальная длина сообщения и компоненты Indy

Рейтинг: 0Ответов: 2Опубликовано: 29.04.2015

Всем привет, Пытаюсь отправить сообщение с использованием TIdMessage. У меня есть HTML-страница в качестве шаблона и какой-то большой текст, который нужно вставить в шаблон (в специальном месте, который был отмечен как ##text##). После слияния шаблона и текста, я получаю тело моего нового сообщения. Потом я отправляю это сообщение (используйте TIdMessage и TIdSMTP), но в результате сообщение содержит только вторую часть текста. Текст имеет больше 40,000 символов. Когда я посылаю сообщение без HTML шаблона (только большой текст) все ок.

Как я могу установить длину сообщения?

Я ставил

FIdMessage.ContentTransferEncoding := 'quoted-printable' and FIdSMTP.MsgLineLength := MAXWORD

но это не помогло (((

Заранее спасибо. Вот мой код:

var
  FSMTP: TIdSMTP;
  FIdMessage: TIdMessage;
  idx: integer;
  i: Integer;
  FIdText: TIdText;
begin
  FSMTP := TIdSMTP.Create( nil );
  FIdMessage := TIdMessage.Create( nil );
  try
    try
      FIdMessage.ExtraHeaders.Clear;
      FIdMessage.MessageParts.Clear;

      // Attachments
      for idx := 0 to Attachments.Count - 1 do
        TIdAttachment.Create( FIdMessage.MessageParts,
          TEmailAttachment( Attachments.Items[ idx ] ).FLocalTemplateName );


      FIdMessage.From.Text := FFrom;
      FIdMessage.Recipients.EMailAddresses := FTo;
      FIdMessage.Subject := FSubject;
      if (FHtmlTemplateFilePath <> '') then
      begin
        FIdMessage.ContentType := 'multiparts/related; type="text/html"';
        AddAttachements(FIdMessage);  // procedure that added Attachments

        FIdText := TIdText.Create(FIdMessage.MessageParts, nil);
        FIdText.Body.Text := 'Please view a html version of this email';
        FIdText.ContentType := 'text/plain';


        FIdText := TIdText.Create(FIdMessage.MessageParts, nil);
        FIdText.Body.Text := FBody;
        FIdText.ContentType := 'text/html';

      end
      else
      begin
        FIdMessage.Body.Text := FBody;
      end;    

      FIdMessage.CCList.Clear;
      FIdMessage.ReceiptRecipient.Text := '';

      FSMTP.AuthenticationType := FSMTPAuthenticationType;
      FSMTP.UserID := FSMTPUserID;
      FSMTP.Password := FSMTPPassword;
      FSMTP.Host := FSMTPHost;
      FSMTP.Port := FSMTPPort;
      FSMTP.MsgLineLength := MAXWORD;

      RepeatRetryCount := FSMTPRepeatRetryCount;
      FSMTP.Connect;
       try
            FSMTP.Send( FIdMessage );
       finally
            FSMTP.Disconnect;
       end;
     except
       end;
  finally
    FSMTP.Free;
    FIdMessage.Free;
  end;
end;

Ответы

Ответов пока нет.