![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемой с кодировкой E-Mail когда прикрепляю файлы [D7, WinXP]
Inna_Z © (2007-06-05 12:55:00)Ниже приведён код функции которая отправляет почту по имейлу.
procedure TDiagReportGenerator.SendReport;
var
Files : string;
begin
// Формируем содержимое письма
GenerateReport;
MailMessage.From.Name := 'AsBase Client';
MailMessage.Recipients.EMailAddresses := FEmail;
MailMessage.ContentType:= 'text/html';
MailMessage.CharSet:= 'Windows-1251';
MailMessage.Subject := 'Информация об ошибке';
MailMessage.Body.Add(ReportText);
Files := DiagnosticCollector.ClientInfo.Pathscreen;
TIdAttachment.Create(MailMessage.MessageParts, Files);
//send mail
try
try
SMTP.Connect(1000);
SMTP.Send(MailMessage);
except on E:Exception do
ShowMessage('ERROR: ' + E.Message);
end;
finally
if SMTP.Connected then SMTP.Disconnect;
end;
end;
если не прикреплять файлик то письмо оправляется в нормальной кодировке, русский шрифт отображается как надо
Но только стоит добавить в писмо файлик
Files := DiagnosticCollector.ClientInfo.Pathscreen;
TIdAttachment.Create(MailMessage.MessageParts, Files);
(в данном случае это jpeg картинка)
то само письмо начинает приходить в неправильной кодировке. Почту принимаю аутлуком, он даже перестаёт после этого понимать что это HTML формат.
Что я тут пропустила и сделала не так?
Какие ещё параметры и настройки нужны, чтобы правильно прикрепить файлы к письму?
Inna_Z (2007-06-05 14:52:00) [1]Вобщем опытным путём получилось заставить работать это таким способом:
// Формируем содержимое письма
GenerateReport;
MailMessage.From.Name := 'Asbase Client';
MailMessage.Recipients.EMailAddresses := FEmail;
MailMessage.Subject := 'Информация об ошибке';
MailMessage.Body.Clear;
MailMessage.CharSet:= 'Windows-1251';
// Добавила эту часть, она себе потом благополучно исщезает (какой-то глюк видать, но зато потом остаётся то что надо)
TextPart := TIdText.Create(MailMessage.MessageParts);
TextPart.Body.Text := '!!!!!!!!!';
TextPart.ContentType := 'plain/text';
TextPart := TIdText.Create(MailMessage.MessageParts);
TextPart.Body.Text := ReportText;
TextPart.ContentType := 'text/html;charset=windows-1251'; // тогда получается нужная кодировка
Att := TIdAttachment.Create(MailMessage.MessageParts, File);
Att.ContentType := 'image/jpg';
Att.Headers.Add('Content-ID: <'+ Files +'>'); // после этого начинает разбирать что есть картинка, и часть письма в html формате начинает нормально разбираться
//send mail
SendMail;
Inna_Z (2007-06-05 13:49:00) [2]а если так, то текст есть но всё равно не с той кодировкой:
MailMessage.From.Name := 'Asbase Client';
MailMessage.Recipients.EMailAddresses := FEmail;
MailMessage.ContentType:= 'multipart/mixed';
MailMessage.CharSet:= 'Windows-1251';
MailMessage.Subject := 'Информация об ошибке';
MailMessage.Body.Add(ReportText);
Inna_Z (2007-06-05 13:47:00) [3]Не важно что там multipart/mixed или text/html, всё равно таким способом происходит что-то по другому, так как эта текстовая часть вообще не посылается.
Inna_Z (2007-06-05 13:47:00) [4]Не важно что там multipart/mixed или text/html, всё равно таким способом происходит что-то по другому, так как эта текстовая часть вообще не посылается.
clickmaker (2007-06-05 13:38:00) [5]Content-Type multipart/mixed может надо указать?
В принципе, насколько я понял, TextPart эквиваленто Body, только в случае с боди инди сама эту текстовую часть создаст
Inna_Z (2007-06-05 13:13:00) [6]счётчик
MailMessage.MessageParts.TextPartCount
после выполнения того кода остаётся равен 0
Мистика
Inna_Z (2007-06-05 13:06:00) [7]Тогда приходит только файлик без текста письма
clickmaker (2007-06-05 13:01:00) [8]а если
TextPart := TIdText.Create(MailMessage.MessageParts);
TextPart.Body.Text := ReportText;
TextPart.ContentType := 'text/html';
TextPart.ContentTransfer := '8bit';
вместо
MailMessage.Body.Add(ReportText);