Создание библиотеки для отправки почты через SMTP ?

Добрый день! Пытаюсь создать библиотеку для отправки почты без использывания Outlook. Начал писать в Delphi dll возникла следующая проблема. В кодировка темы сообщения отображаеться некорректно. Также некоторые клиеты тело письма тоже некорректно читаю. Может кто нибудь сталкивался с данной проблемой??? привожу текст процедуры заполнения сообщения. Для отправки сообщения использую Indy.

 procedure AddMessage(BodyText,RecipientstMail,FromMail,SubjectMail,AttachPath : String;
                        IsAttach : Boolean);stdcall;
      begin
        try
          EMessage := TIdMessage.Create(Application);
          EMessage.Clear;
            with EMessage do
              begin
                Body.Add(BodyText); // передача данных из memo в компонент IdMessage, для последующей отправки
                Recipients.EMailAddresses :=RecipientstMail;
                From.Text := FromMail; // майл отправителя письма
                Subject := SubjectMail;

                  if (IsAttach) then
                     begin
                      MessageParts.Clear; ///очистка пути прикрепления файла
                      TIdAttachment.Create(MessageParts,AttachPath);
                     end;
                end;

            except
                ShowMessage('Ошибка создания сообщения');
            end;
      end;

Нравится

12 комментариев

Это проблема компонентов Indy, подробнее смотрите на профильных форумах по Delphi.
Как вариант, попробуйте использовать компоненты ICS - там с кодировкой дела обстоят лучше.
--------------------------------------------
Лабитек
Центр разработки приложений

Иван, а на каком Delphi Вы это делаете?

Ну тогда все строковые переменные WideString. Ну а по поводу Indy не знаю, но необходимо проверить как они с юникодом. Возможно скачать последнюю версию.

А вы не посоветуете может заменить Indy на кокой нибудь другой компанент?

"Валерий Андрусик" написал:Как вариант, попробуйте использовать компоненты ICS

Валерий уже посоветовал :). Вы не пробовали ещё?

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Скачал ICS. Почему то сразу возникли проблемы с установкой. Установил. Нашел как устранить проблему с кодировкой темы в Indy 9. Но тут появилась новая. При приеме почты кодировка некоторых сообщений так же карявая. Можно если нетрудно ссылку на работоспособный пример кода с компонентами ICS?

Нашел решения и для тело письма. Письма с форума приходят в кодировке UTF-8. Есть функция UTF8Decode которая переводит из UTF-8 в нужную мне кодировку.

И последний вопрос: В строку кому можно записать не один адрес а несколько. Можно ли туда добавить порядка 2 000 адресов для рассылки клиентам счетов например ???

Думаю, можно создать массив из 2000 адресов и в цикле отправить 2000 писем по одному каждому клиенту. В строку вряд ли столько поместится.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Спасибо всем за помощь. буду работать над библиотекой.

Иван, да и многие SMTP сервера имеют ограничения на количество адресов в полях TO, CC, BCC...
следовательно логичнее использовать совет Олега:

"Лабьяк Олег Игоревич" написал:создать массив из 2000 адресов и в цикле отправить 2000 писем по одному каждому клиенту.

Показать все комментарии