Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.044 c
15-1184573704
Vlad Oshin
2007-07-16 12:15
2007.08.12
что за кодировка? какаято стандартная или вычурная?


2-1184660136
Sergey_G
2007-07-17 12:15
2007.08.12
Подключение сетевой базы данных


3-1177918062
lavrenty
2007-04-30 11:27
2007.08.12
ClientDataSet: перезагрузка данных


3-1177487237
RA
2007-04-25 11:47
2007.08.12
нужно сбросить закешированные записи в базу


15-1184293628
Slider007
2007-07-13 06:27
2007.08.12
С днем рождения ! 13 июля 2007 пятница





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский