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

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 13.12.2012, 23:00   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,455
Вопрос 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, 05:52   #2
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,021
По умолчанию

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


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


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS