Никак не могу победить поле subject. Чтобы не писал в subject всегда приходит в фиксированной кодировке. По умолчанию приходило письмо с темой в кодировке по моему KOI8-R, хотя текст изначально в теме в UTF-8. Пробовал перекодировать результат - один. Поправил LANG_RUSSIAN: Result := idcswindows_1251 в IdGlobalProtocols.pas - стало приходить всегда в UTF-8 (subject - Тест РёР· Lazarus).
Что касается тела, то там всегда приходит читабельный текст.
(Заголовок
Содержимое сообщения)
- Код: Выделить всё
txtpart,htmpart: TidText;
begin
idsmtp1.Host:='exchange.host';
idsmtp1.Port:=2526;
idsmtp1.Username:='username';
idsmtp1.Password:='password';
idsmtp1.AuthType:=satDefault;
idMessage1.Clear;
idmessage1.From.Address:='support@host.com';
idmessage1.Recipients.EMailAddresses:='me@host.com';
//idmessage1.ContentTransferEncoding:='UTF-8';
//idmessage1.CharSet:='UTF-8';
idmessage1.Subject:='Тест из Lazarus';
idmessage1.ContentType:='multipart/related; type="text/html"';
txtpart:= TIdText.Create(IdMessage1.MessageParts);
txtpart.ContentType := 'text/plain';
txtpart := TIdText.Create(IdMessage1.MessageParts);
txtpart.ContentType := 'multipart/related; type="text/html"';
htmpart := TIdText.Create(IdMessage1.MessageParts, nil);
htmpart.ContentType := 'text/html; charset=utf-8'; // Не забываем кодировку!!! Иначе получишь вопросики
htmpart.Body.Add('<html>');
htmpart.Body.Add('<head>');
htmpart.Body.Add('</head>');
htmpart.Body.Add('<body><h1>Заголовок</h1>');
htmpart.Body.Add(Memo1.Text + '</body>');
htmpart.Body.Add('</html>');
htmpart.ParentPart := 1;
IdSMTP1.Connect();
IdSMTP1.Send(Form1.IdMessage1);
IdSMTP1.Disconnect();
Где "собака порылась"?
Вопрос закрыт - нашел решение.
- Код: Выделить всё
IdMessage1.ExtraHeaders.add('Subject:'+edit1.Text);