Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Отправка форматированного текста


Автор: oleg2s 30.12.2012, 06:16
Доброе время суток.
Не могу отформатировать текст в теле письма при отправке с помощью TIdSMTP.
Письмо приходит без форматирования.

Код

With TIdText.Create(IdMessage1.MessageParts, nil) do
   begin
   CharSet := 'UTF-8';
   ContentType := 'text/html';
   Body.LoadFromFile(FileNameHTML);
   end;


Вот мой HTML-файл

Код

<html>
<head>
</head>
<body>
<td>
   <table id="content">
     <tr>
        <td  style="height:70px; font-size:50px; width: 730px">ТЕСТ</td>
     </tr>
   </table>
</td>
</body>
</html>

Автор: Illusion Dolphin 30.12.2012, 09:46
Пишут что ещё надо:
Код

        IdMessage1.IsEncoded := True ;
        IdMessage1.ContentType := 'multipart/alternative';
        IdMessage1.ClearBody;

Детальнее http://www.indyproject.org/Sockets/Blogs/RLebeau/2005_08_17_A.en.aspx или http://www.indyproject.org/Sockets/Blogs/RLebeau/20080116.EN.aspx

Автор: oleg2s 30.12.2012, 10:22
Если я указываю IdMessage1.ContentType := 'multipart/alternative';
то письмо приходит поделенное на части, но HTML вообще не видно.


Автор: Illusion Dolphin 30.12.2012, 10:57
Код


procedure TForm29.Button1Click(Sender: TObject);
var
  html: TStrings;
  htmpart, txtpart: TIdText;
  bmppart: TIdAttachment;
  email: TIdMessage;
  idSmtp: TIdSMTP;
begin
  html := TStringList.Create();
  html.Add('<html>');
  html.Add('<head>');
  html.Add('</head>');
  html.Add('<body><h1>Hello</h1>');
  html.Add('This is a picture of us!</body>');
  html.Add('</html>');

  email := TIdMessage.Create(nil);
  email.From.Text := '[email protected]';
  email.Recipients.EMailAddresses := '[email protected]';
  email.Subject := 'Hello';
  email.ContentType := 'multipart/mixed';
  email.Body.Assign(html);

  txtpart := TIdText.Create(email.MessageParts);
  txtpart.ContentType := 'text/plain';
  txtpart.Body.Text := '';

  htmpart := TIdText.Create(email.MessageParts, html);
  htmpart.ContentType := 'text/html';

  idSmtp := TIdSMTP.Create(nil);
  try
    idSmtp.Port := 25;
    idSmtp.Username := '[email protected]';
    idSmtp.Password := 'wdmcome';
    idSmtp.Host := 'smtp.mail.ru';
    idSmtp.Port := 25;
    idSmtp.Connect();
    try
      idSmtp.Send(email);
      ShowMessage('Sent');
    except
      on E: Exception do
        ShowMessage('Failed: ' + E.Message);
    end;
  finally
    idSmtp.Free;
    email.Free;
    html.Free;
  end;
end;


Отсюда http://niclogic.wordpress.com/2009/01/19/sending-html-email-using-delphi-and-indy/

Автор: oleg2s 30.12.2012, 14:10
Странно...
<h1>Hello</h1> - отработало как надо. Большими буквами.

А эту строку не хочет. Видимо что-то не то с самим HTML.
<td  style="height:70px; font-size:50px; width: 730px">ТЕСТ</td>

Спасибо. Буду разбираться.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)