Форум: "Основная";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];
ВнизКак послать e-mail с русским текстом. Найти похожие ветки
← →
Inna_Z (2007-06-01 12:29) [0]Пробовала посылать при помощи стандартных компонент
TIdSMTP, TIdMessage но возникли проблемы с кодировкой.
Кто знает какие-то хорошие компоненты
или расскажите как можно затставить правильно работать эти?
P.S. Отправленную почту получала аутлуком
← →
Плохиш © (2007-06-01 12:38) [1]TIdMessagePart.ContentType
← →
Savek (2007-06-01 12:43) [2]Я проблемы с кодировкой решил вот так:
IdMessage.From.Name:=EncodeHeader(eFName.Text,C,"Q",h,"windows-1251");
IdMessage.Subject:=EncodeHeader(eTema.Text,C,"Q",h,"windows-1251");
//и т.д.
← →
clickmaker © (2007-06-01 12:43) [3]TIdMessagePart.CharSet?
← →
Savek (2007-06-01 12:44) [4]Я проблемы с кодировкой решил вот так:
IdMessage.From.Name:=EncodeHeader(eFName.Text,C,"Q",h,"windows-1251");
IdMessage.Subject:=EncodeHeader(eTema.Text,C,"Q",h,"windows-1251");
//и т.д.
← →
Inna_Z (2007-06-01 12:44) [5]Спасибо.
Разобралась
В аутлуке надо было выбрать кодировку
Cyrillic Windows
Оказывается всё было просто :-)
← →
Inna_Z (2007-06-01 12:49) [6]А что за функция EncodeHeader?
Откуда она?
← →
clickmaker © (2007-06-01 12:59) [7]
> [6] Inna_Z (01.06.07 12:49)
у меня она тут живет
D:\Delphi7\Indy10\Protocols\IdCoderHeader.pas
у тебя наверно где-то в том же районе
← →
Anatoly Podgoretsky © (2007-06-01 13:16) [8]
> Оказывается всё было просто :-)
Не так все просто и главное неправильно.
Что бы не было проблем со чтением писем, надо чтобы в письме были указаны кодировки, для темы и для текста.
← →
ANB © (2007-06-01 13:17) [9]
> В аутлуке надо было выбрать кодировку
> Cyrillic Windows
аутлук должен сам понимать кодировку. Для сего ему надо ее объяснить.
Письмо шлешь чисто текстом или с аттачами ?
← →
Inna_Z (2007-06-01 18:39) [10]Надо вобщем чтоб было и текст письма на русском и заголовок (с ним всё кстати нормально) и прекреплённые файлы
шлю я его пока так:
// Настраиваем SMTP
SMTP.Host := FHost;
SMTP.Port := FPort;
// Формируем содержимое письма
MailMessage.From.Address := "Inna@asbase.ntu-kpi.kiev.ua";
MailMessage.Recipients.EMailAddresses := FEmail;
MailMessage.ContentType := "plain/text";
MailMessage.Subject := "Проверка связи";
MailMessage.Body.Text := ReportText;
//send mail
try
try
SMTP.Connect(1000);
SMTP.SendMsg(MailMessage);
except
end;
finally
if SMTP.Connected then SMTP.Disconnect;
end;
Как указать ему правильно кодировку?
есть свойство CharSet
в делфи перечисленны варианты
US-ASCII
ISO-8859-1
ISO-8859-2
ISO-8859-3
ISO-8859-4
ISO-8859-5
ISO-8859-6
ISO-8859-7
ISO-8859-8
ISO-8859-9
ISO-8859-10
можно ли задавать другие?
← →
Inna_Z (2007-06-01 18:40) [11]Пока без прикреплённых файлов шлю
← →
TStas © (2007-06-01 20:46) [12]Вот этот рабочий код, взятый откуда-то с форума:
uses Mapi, IniFiles, CommonUnit, TuneUnit, MsgFormUnit, HDDInfo;
const
FileName = "MailAddresses.dat";
Section = "Main";
Value = "ItemIndex";
TextFileName = "Распечатка.txt";
function SendEMail(Handle: THandle; Mail: TStrings): Cardinal;
type
TAttachAccessArray = array [0..0] of TMapiFileDesc;
PAttachAccessArray = ^TAttachAccessArray;
var
MapiMessage: TMapiMessage;
Receip: TMapiRecipDesc;
Attachments: PAttachAccessArray;
AttachCount: Integer;
i1: integer;
FileName: string;
dwRet: Cardinal;
MAPI_Session: Cardinal;
WndList: Pointer;
begin
dwRet := MapiLogon(Handle,
PChar(""),
PChar(""),
MAPI_LOGON_UI or MAPI_NEW_SESSION,
0, @MAPI_Session);
if (dwRet <> SUCCESS_SUCCESS) then
begin
MessageBox(Handle,
PChar("Error while trying to send email"),
PChar("Error"),
MB_ICONERROR or MB_OK);
end
else
begin
FillChar(MapiMessage, SizeOf(MapiMessage), #0);
Attachments := nil;
FillChar(Receip, SizeOf(Receip), #0);
if Mail.Values["to"] <> "" then
begin
Receip.ulReserved := 0;
Receip.ulRecipClass := MAPI_TO;
Receip.lpszName := StrNew(PChar(Mail.Values["to"]));
Receip.lpszAddress := StrNew(PChar("SMTP:" + Mail.Values["to"]));
Receip.ulEIDSize := 0;
MapiMessage.nRecipCount := 1;
MapiMessage.lpRecips := @Receip;
end;
AttachCount := 0;
for i1 := 0 to MaxInt do
begin
if Mail.Values["attachment" + IntToStr(i1)] = "" then
break;
Inc(AttachCount);
end;
if AttachCount > 0 then
begin
GetMem(Attachments, SizeOf(TMapiFileDesc) * AttachCount);
for i1 := 0 to AttachCount - 1 do
begin
FileName := Mail.Values["attachment" + IntToStr(i1)];
Attachments[i1].ulReserved := 0;
Attachments[i1].flFlags := 0;
Attachments[i1].nPosition := ULONG($FFFFFFFF);
Attachments[i1].lpszPathName := StrNew(PChar(FileName));
Attachments[i1].lpszFileName :=
StrNew(PChar(ExtractFileName(FileName)));
Attachments[i1].lpFileType := nil;
end;
MapiMessage.nFileCount := AttachCount;
MapiMessage.lpFiles := @Attachments^;
end;
if Mail.Values["subject"] <> "" then
MapiMessage.lpszSubject := StrNew(PChar(Mail.Values["subject"]));
if Mail.Values["body"] <> "" then
MapiMessage.lpszNoteText := StrNew(PChar(Mail.Values["body"]));
WndList := DisableTaskWindows(0);
try
Result := MapiSendMail(MAPI_Session, Handle,
MapiMessage, MAPI_DIALOG, 0);
finally
EnableTaskWindows( WndList );
end;
for i1 := 0 to AttachCount - 1 do
begin
StrDispose(Attachments[i1].lpszPathName);
StrDispose(Attachments[i1].lpszFileName);
end;
if Assigned(MapiMessage.lpszSubject) then
StrDispose(MapiMessage.lpszSubject);
if Assigned(MapiMessage.lpszNoteText) then
StrDispose(MapiMessage.lpszNoteText);
if Assigned(Receip.lpszAddress) then
StrDispose(Receip.lpszAddress);
if Assigned(Receip.lpszName) then
StrDispose(Receip.lpszName);
MapiLogOff(MAPI_Session, Handle, 0, 0);
end;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.051 c