Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Арсенальная башня
  
Содержание



 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
 
 08:30 ~AQUARIUS~
 08:29 Noskov
 08:27 Лупень сизокрылый
 08:25 777
 08:25 Александр Малыгин
 08:24 Александр Алексеев
 08:21 Sanchez
 08:14 Epos
 08:14 Nemo
 08:11 Witches
 
 
Во Флориде и в Королевстве сейчас  08:30[Войти] | [Зарегистрироваться]

'К о м п о н е н т ы' - работа с SMTP-сервером

Елена Филиппова
дата публикации 13-09-2000 00:00

'К о м п о н е н т ы' - работа с SMTP-сервером

Рассматриваются некоторые компоненты для решения очень простой и конкретной задачи: работа с SMTP-сервером: рассылка сообщений.

Основным критерием (кроме четкой работы) служил меньший размер исполняемого кода.
Коротко о задаче: "Робот по отправке сообщений по разным условиям". Сообщения только текстовые, то есть attachment не использовался и в этой части компоненты не тестировались.

Использовались четыре компонента с сервера www.torry.ru. Раздел VCL страница Internet -> E-Mail и страница Internet -> Packs.
Все компоненты тестировались в одинаковых условиях: Windows NT + Delphi 5

Название Internet Mail Suite v.2.02
URL Раздел VCL страница Internet -> Packs
http://www.torry.ru/internetpacks.htm
http://www.torry.ru/vcl/internet/packs/imsd4.zip
Распространение Коммерческий; Trial (work while IDE is running)
IDE Delphi 1,2,3,4; CBuilder 1,3; У меня работал в Delphi 5.

Использовались только те компоненты, которые обеспечивают работу с SMTP-сервером.

TmsSMTPClient

Настройка параметнров SMTP-клиента (почтовый ящик) - адрес и порт сервера, ссылка на компонент-сообщение. Доступны события OnAddressRejected, OnConnected, OnConnecting , OnDisconnected, OnPreparing, OnSending, OnSent, OnTransferProgress.

TmsMessage

Непосредственно письмо. В design-time настраиваются практически все параметры, поддерживаются attacments, СС, BCC, X-Priority и ReturnRecipient (уведомление о даставке).

К недостаткам в моем случае можно было отнести только один момент - увеличение размера приложения примерно на 65К. Причем в обычных приложениях, в которых используется VCL, этот факт скорее всего останется незамеченным. Больше никаких недостатков или неудобств в использовании Internet Mail Suite v.2.02 я не обнаружила.

Название AHM E-Mail Components Triton 2000 v.2000
URL Раздел VCL страница Internet -> E-Mail
http://www.torry.ru/email.htm
http://www.torry.ru/vcl/internet/email/ahmmail.zip
Распространение Коммерческий; Evaluation (time-limit)
IDE Delphi 3,4,5; CBuilder 3 ,4 ,5;

Тестировались только те компоненты этой библиотеки, которые необходимы для работы с SMTP-сервером:

TAHMAccountHolder

Коллекция почтовых аккаунтов (почтовых ящиков). Для каждого ящика настраивается адрес и порт SMTP ( и POP3 )сервера, обратный адрес, login и пароль для доступа к серверам, требующим авторизации и так далее.
Таких почтовых ящиков в коллекции может быть неограниченное количество. Так заявлено авторами, я тестировала с 20-ю ящиками, проблем не обнаружилось. Есть только недочет - свойство Default у каждого почтового ящика по умолчанию устанавливается в TRUE, так могут оказаться дефолтными все 20 ящиков. При посылке сообщений выбирается первый из коллекции ящиков, у которого Default:=TRUE. Так что тут надо быть внимательными - это потенциальная ошибка.
Компонент никаких событий не обрабатывает. Очень удобно сделана работа со списком почтовых ящиков в design-time.

TAHMSMTPMail.

Непосредственно письмо - коллекция сообщений. Обязательно указывается ссылка на активный почтовый ящик из выбранного TAHMAccountHolder, для этого используется схема умолчаний.
Каждое письмо (количество неограничено) имеет соответствующие настройки: attacments (коллекция файлов), сообщение, тема письма, кому + адрес и от кого + адрес.
Опять-таки, очень удобно сделана работа с этим компонентом в Design-time. Более того, на этапе разработки можно провести тест настроенных компонентов, то есть, в Design-time отослать письмо.
Доступны события BeforeExecute, AfterExecute, OnBeforeSend, OnAfterSend, OnConnect, OnDisconnect, OnEncodeStart, OnEncodeProgress, OnEncodeEnd , OnError, OnExecute, OnSendProgress, OnServerMessage, OnServerResponse, OnSuccesSend.

К недостаткам можно отнести следующее:
  • Довольно большой размер библиотеки, так что в итоге код увеличивается примерно на 70К относительно Mail200 и SakEmail
  • Не поддерживается настройка полей X-Priority, CC и BCC.
  • Описанная выше ситуация с "ящиком по умолчанию".
Вообще эти компоненты очень просты в изучении, очень удобны в настройке и использовании, но для моей задачи оказались черезчур громоздки.

 

Название Mail2000 v 1.2
URL Раздел VCL страница Internet -> E-Mail
http://www.torry.ru/email.htm
http://www.torry.ru/vcl/internet/email/mail2000.zip
Распространение Данный компонент является бесплатным и распространяется с исходниками.
IDE Delphi 4. (У меня работало в Delphi 5)

Аналогично, использовались два компонента:

TSMTP2000

Настройка одного почтового ящика: адрес и порт SMTP-сервера, поддерживаются настройки PROXY. В нем же указывается ссылка на компонент-почтовое сообщение TMailMessage.

TMailMessage

Непосредственно письмо. В Design-time можно настроить только поля Name и CharSet. Все остальные настраиваются и заполняются только в run-time. Таким образом, чтобы разобраться с этими компонентами, необходимо читать исходники, благо они есть.
Поддерживается посылка attacment-файлов, поля СС и BCC. Текст сообщения может быть отправлен в форматах PlainText, RTF и HTML.
Работа с SMTP-сервером идет через TClientSocket.

К недостаткам можно отнести то, что не поддерживается поле X-Priority, а из всех возможных событий для обоих компонентов предлагается только OnProgress. И в исходных кодах, которые предлагаются автором, есть небольшие "огрехи", которые, впрочем, несложно исправить.
Отсутствие настроек компонентов в Design-time и недостаточная комментированность кода в некоторой степени тоже может быть отнесена к недочетам, но эту проблему решает подробный пример, который предлагается вместе с компонентами.
В общем компоненты довольно удобны и просты в работе, наличие исходных кодов дает определенную свободу действия, а так же не сильно увеличивают размер приложения.

Примечание:
Как уже говорилось в начале обзора, в задачу не входит пересылка присоединенных файлов, а только текстовые сообщения.
Но хочется отметить, что при самом простом тесте на пересылку присоединенных файлов с Mail2000, файлы стабильно портятся. Из отосланных 113К приходит файл размером 53К и при этом с испорченным содержимым.

 

Название SakEmail v.3.0.1
URL Раздел VCL страница Internet -> E-Mail
http://www.torry.ru/email.htm
http://www.torry.ru/vcl/internet/email/sakemail.zip
Распространение Данный компонент является бесплатным и распространяется с исходниками.
IDE Delphi 3,4,5.

Тестировались только два компонента, которые необходимы для работы с SMTP-сервером:

TSakSMTP

Настройка одного почтового ящика: адрес и порт SMTP-сервера. Доступны события OnBeforeSend, OnAfterSend, OnConnect, OnConnecting, OnSendTextToSocket, OnRecieveTextFromSocket, OnError, OnQuit, OnLookUp и OnSendProgress.
Работа с SMTP-сервером идет через TClientSocket.

TSakMsg

Отсылаемое письмо. Практически все поля (кроме attacment) можно настроить в design-time. Поддерживаются CC, BCC, X-Priority, X-Mailer.
Связка сообщения и почтового ящика происходит в run-time при отсылке письма: SakSMTP1.SendTheMessage(SakMsg1);

К недостаткам можно отнести следующее:
  • Невозможно отправить письмо с пустым полем FROM - принудительно генерится исключительная ситуация. Это не надуманная проблема, в реальной задаче рассылки служебных уведомлений принципиально не заполняются поля FROM и REPLY-TO, чтобы не было соблазна на эти письмо ответить.
  • При повторном использовании в run-time этих компонент с другими параметрами письма это новое письмо отправляется, полностью игнорируя новые параметры. Проще говоря, изменив в run-time получателя (тему письма или его текст) и нажав на кнопочку Send второй раз, письмо будет отправлено со всеми старыми значениями.

Примечание:
По словам тех, кто давно использует SakEmail, этот компонент всегда работает корректно с присоединенными файлами и на передачу и на прием.


Больше всего мне понравился Internet Mail Suite v.2.02, но моим выбором (только для этой конкретной задачи) стал Mail2000. Почему? Все просто - никогда не нужно колоть орехи дорогим фотоаппаратом. :о)
Возможно, это не лучшее из того, что в принципе существует на тему SMTP. Но моя конкретная задача была решена, исходные коды, а значит и свобода действия, в наличии и я прекратила дальнейшие поиски.





Смотрите также материалы по темам:
[SMTP]

 Обсуждение материала нет сообщений
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Хостинг предоставлен компанией DOTNETPARK (ASP.NET, MS SQL hosting)  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования