Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как отправить письмо на русском языке 
:(
    Опции темы
AndreyZ53
Дата 23.8.2008, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 22.8.2008

Репутация: 1
Всего: 2



Всем привет, как мне отправить письмо на русском языке, тема отправляется на русском а сомо сообщение не хочет, вот код программы
Код

uses IdCoderHeader;

procedure TForm1.sButton1Click(Sender: TObject);
var
smtp:TIdSMTP;
mes:TIdMessage;
FileAttach:string;
begin
if ((Edit1.Text='') or (Edit2.Text='') or (Edit3.Text='') or (Edit4.Text='') or (Edit5.Text='') or (Memo1.Text='')) then
Application.MessageBox('Не заполнено некоторое поле','Внимание',MB_OK+MB_ICONINFORMATION)
else
begin
smtp:=TIdSMTP.Create(nil);
 mes:=TIdMessage.Create(nil);
 smtp.Host := 'smtp.'+Edit5.Text;
 smtp.Port := 25;
 smtp.Password:=Edit2.Text;
 smtp.Username:=Edit1.Text;;
 smtp.AuthenticationType:=atLogin;
 smtp.HeloName:='Info';
 mes.From.Text := Edit1.Text+'@mail.ru';
 mes.Sender.Text:=Edit1.Text+'@mail.ru';
 mes.Recipients.EMailAddresses:=Edit3.Text;
 mes.Subject := EncodeHeader(AnsiToUtf8(Edit4.Text), [], 'B', bit8, 'utf-8');
 mes.ContentType := 'text/plain; charset="utf-8"';
 mes.Body.Text :=AnsiToUtf8(Memo1.Text);
 mes.MessageParts.Clear;
 try
  smtp.Connect;
  smtp.Send(mes);
 except
 end;
 smtp.Disconnect;
 mes.Free;
 smtp.Free;
 Application.MessageBox('Письмо отправлено,'Внимание',MB_OK+MB_ICONINFORMATION);
 end;
 Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
Edit4.Clear;
Edit5.Clear;
Memo1.Clear;
end;


Подскажите плиз чего тема отправляется, а сам текст сообщения не хочет, спасибо за ранее
--------------------
https://itbases.ru/
PM MAIL WWW Skype   Вверх
AndreyZ53
Дата 23.8.2008, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 22.8.2008

Репутация: 1
Всего: 2



Всё спасибо сам разобрался вот 2 фунции если кому надо, которые перекодируют сообщение

Код

const

Koi: array[0..66] of Char = (
'T', 'Ё', 'ё', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж',
'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р',
'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ',
'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д',
'е', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о',
'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш',
'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');

Win: array[0..66] of Char = (
'ё', 'Ё', 'T', 'ю', 'а', 'б', 'ц', 'д', 'е', 'ф',
'г', 'х', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п',
'я', 'р', 'с', 'т', 'у', 'ж', 'в', 'ь', 'ы', 'з',
'ш', 'э', 'щ', 'ч', 'ъ', 'Ю', 'А', 'Б', 'Ц', 'Д',
'Е', 'Ф', 'Г', 'Х', 'И', 'Й', 'К', 'Л', 'М', 'Н',
'О', 'П', 'Я', 'Р', 'С', 'Т', 'У', 'Ж', 'В', 'Ь',
'Ы', 'З', 'Ш', 'Э', 'Щ', 'Ч', 'Ъ');

function WinToKoi(Str: string): string;
var
  i, j, index: Integer;
begin
  Result := '';

  for i := 1 to Length(Str) do
  begin
    index := -1;
    for j := Low(Win) to High(Win) do
      if Win[j] = Str[i] then
      begin
        index := j;
        Break;
      end;

    if index = -1 then
      Result := Result + Str[i]
    else
      Result := Result + Koi[index];
  end;
end;



function KoiToWin(Str: string): string;
var
  i, j, index: Integer;
begin
  Result := '';

  for i := 1 to Length(Str) do
  begin
    index := -1;
    for j := Low(Win) to High(Win) do
      if Koi[j] = Str[i] then
      begin
        index := j;
        Break;
      end;

    if index = -1 then
      Result := Result + Str[i]
    else
      Result := Result + Win[index];
  end;
end;




А потом когда отсылаете сообщение -  IdMessage1.Body.Text :=WinToKoi(Memo1.Text);
--------------------
https://itbases.ru/
PM MAIL WWW Skype   Вверх
Snowy
Дата 25.8.2008, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



koi-8 подразумевается по умолчанию.
Но правильно всё же явно указывать кодировку.
Например mes.CharSet := 'UTF-8'; для юникода.
mes.CharSet := 'KOI8-R'; для кои-8
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0562 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.