Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2012, 00:00   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
Вопрос Indy. Отправка сообщений на email, на русском.

Доброго времени!

Пытаюсь отправить сообщение на русском языке:
Код:
      // SMTP Auth
      if (AM.AccType = uaRandom) then
        Acc := AM.GetRandomAccaunt
      else
        Acc := AM.GetCheckedAccaunt;

      sFromMail := MB.FromEmail;
      sFromName := MB.FromName;

      if (sFromMail = EmptyStr) then
        sFromMail := Acc.Login;

      if (sFromName = EmptyStr) then
        sFromName := Acc.Login;

      SMTP.Host := Acc.Server;
      SMTP.Port := Acc.Port;
      SMTP.Username := Acc.Login;
      SMTP.Password := Acc.Password;
      try
        SMTP.Connect;
      except
        {
          Смена аккаунта, сообщение о не рабочем аккаунте.
        }
      end;
      // Check succsessfull connect
      if SMTP.Connected then
      begin
        msg := TIdMessage.Create;
        try
          msg.OnInitializeISO := TDummyEncode.SetCharSet;
          msg.Date := Now;
          msg.Subject := String(sTitle);
          msg.Body.Text := String(sText);
          msg.Recipients.EMailAddresses := (MB[i].ToEmail);
          msg.Encoding := meMIME;
          if MB.IsHTMLText then
          begin
           // msg.CharSet := 'koi8-r';
            msg.ContentType := 'text/html';
          end
          else
          begin
           // msg.CharSet := 'koi8-r';
            msg.ContentType := 'text/plain';
          end;

          try
            SMTP.Send(msg);
            MB[i].Status := msSent;
          except
            MB[i].Status := msNotSent;
          end;

          {
            Вызов события Отправлено/Не отправлено, обновление счетчиков
          }
        finally
          FreeAndNil(msg);
          SMTP.Disconnect;
        end;
      end;
    end;
  end;

end;

{ TDummyEncode }

class procedure TDummyEncode.SetCharSet(var VHeaderEncoding: Char;
  var VCharSet: string);
begin
  VCharSet := IdCharsetNames[idcs_UTF_8];
end;

Вроде и работает, но нет.. не работает!

Самое смешное, что русский текст в теме письма отображается правильно, а вот текст письма на русском языке, отображается как ?????.

На что грешить?
Человек_Борща вне форума Ответить с цитированием
Старый 14.12.2012, 06:52   #2
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

вместо msg.Body.Text := String(sText);
Код:
TextPart := TIdText.Create(msg.MessageParts);
TextPart.Body.Text := String(sText);
TextPart.ContentType := 'text/html;charset=windows-1251';
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отправка на email beygul HTML и CSS 9 07.11.2012 14:57
Indy чат на русском steelrus Работа с сетью в Delphi 0 09.07.2012 21:46
Отправка файла по EMAIL 4ok Работа с сетью в Delphi 7 02.08.2011 16:12
Отправка по email DeDoK Общие вопросы Delphi 6 19.04.2011 11:41
Indy. Отправка сообщений клиенту и изменяемый ReadTimeout. Антон Ю.Б. Работа с сетью в Delphi 0 06.10.2009 20:52