Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 14.12.2012, 00:00   #1
Человек_Борща
Профессионал
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Адрес: Республика Беларусь, г. Минск
Сообщений: 11,444
Репутация: 2785
Вопрос 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
Адрес: Siberia
Сообщений: 1,021
Репутация: 759
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отправка на 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


14:59.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.