Форум: "Основная";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];
ВнизПроблемой с кодировкой E-Mail когда прикрепляю файлы Найти похожие ветки
← →
Inna_Z (2007-06-05 12:55) [0]Ниже приведён код функции которая отправляет почту по имейлу.
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 формат.
Что я тут пропустила и сделала не так?
Какие ещё параметры и настройки нужны, чтобы правильно прикрепить файлы к письму?
← →
clickmaker © (2007-06-05 13:01) [1]а если
TextPart := TIdText.Create(MailMessage.MessageParts);
TextPart.Body.Text := ReportText;
TextPart.ContentType := "text/html";
TextPart.ContentTransfer := "8bit";
вместо
MailMessage.Body.Add(ReportText);
← →
Inna_Z (2007-06-05 13:06) [2]Тогда приходит только файлик без текста письма
← →
Inna_Z (2007-06-05 13:13) [3]счётчик
MailMessage.MessageParts.TextPartCount
после выполнения того кода остаётся равен 0
Мистика
← →
clickmaker © (2007-06-05 13:38) [4]Content-Type multipart/mixed может надо указать?
В принципе, насколько я понял, TextPart эквиваленто Body, только в случае с боди инди сама эту текстовую часть создаст
← →
Inna_Z (2007-06-05 13:47) [5]Не важно что там multipart/mixed или text/html, всё равно таким способом происходит что-то по другому, так как эта текстовая часть вообще не посылается.
← →
Inna_Z (2007-06-05 13:47) [6]Не важно что там multipart/mixed или text/html, всё равно таким способом происходит что-то по другому, так как эта текстовая часть вообще не посылается.
← →
Inna_Z (2007-06-05 13:49) [7]а если так, то текст есть но всё равно не с той кодировкой:
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 14:52) [8]Вобщем опытным путём получилось заставить работать это таким способом:
// Формируем содержимое письма
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;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.048 c