Кодим свой MailClient на Delphi 7
В последнее время вижу, многие хотят написать свой Mail агент на Delphi 7. Но не у всех это получается, потому что они что то не понимают. Сейчас я тебе расскажу и покажу как написать свой Mail агент с помощью Delphi 7. В конце поста компонент и исходник программы.
За основу возьмем информацию пользователя AquaKlaster вот отсюда
Итак, приступим .
Для начала нам нужно скомпилировать сам компонент MailClient .
Качаем архивчик по любой из ссылок
1. http://narod.ru/disk/2851335001/MailClient.rar.html
2. http://depositfiles.com/files/p2s2q2fwk
Компонент работает только в Delphi 7.
В Delphi в меню Component\Install Component указываем путь к файлу client.pas, жмем ОК,
Компонент установится автоматически в закладку Sample под названием MailClient, кидаем его на форму.
Также кидаем TCPClient - он нам нужен будет что бы узнавать адрес, на который в последующем будет коннектиться клиент!
Можно кинуть на форму пару Edit и Button, но мы будет делать все напрямую.
Настраиваем пару свойств для TCPClient:
В RemoteHost пишем mrim.mail.ru
В RemotePort пишем 443 или 2042
Настраиваем свойства для MailClient:
В Mail пишем вам мыло в формате Маил@домен .ru например delphi7.borland@mail.ru
В PassWord пишем ваш пароль **********
В MRIMHost пишем mrim.mail.ru
В MRIMPort пишем 443 или 2042
Далее создаем процедуру Form1.Create
и узнаём IP адрес на который должен обратиться наш компонент
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
MrimS: string;
begin
TCPClient.Active:=True;
if TCPClient.Connected then
MrimS:=TCPClient.Receiveln(#$A); {Получили адрес и порт}
TCPClient.Disconnect;
if MrimS <> '' then
for i:=1 to Length(MrimS) do
if MrimS[i] = ':' then
begin
MailClient.Host:=Copy(MrimS, 0, i-1);
MailClient.Port:=StrToInt(Copy(MrimS, i+1, Length(MrimS)-i));
form1.StatusBar1.Panels[0].Text:='Host '+ Mailclient.host+' Port '+IntToStr(MailClient.Port);
break;
end;
if MailClient.HostInit then begin
MailClient.Connect; {Соеденяемься}
end
else
MailClient.RequestHost;
end;
Далее мы устанавливаем соединение
procedure TForm1.MailClientConnect(Sender: TObject);
begin
MailClient.Hello;
end;
И авторизируемся если соединение прошло успешно
procedure TForm1.MailClientHello(Sender: TObject);
begin
MailClient.Authorize;
end;
И если соединении пропало то мы подключаемся автоматически
procedure TForm1.MailClientRequestHost(Sender: TObject);
begin
mailclient.Status:=OnLine;
MailClient.Connect;
end;
И не забудьте обязательно прописать эту строчку
mailclient.Status:=OnLine;
а то вы не сможете работать с компонентом.
Вот и все, если сделали все правильно то должно произойти подключение. ))
Все остальные функции я не буду расписывать, некоторые вы можете посмотреть в моей программе , она конечно не безупречная , но более менее работает стабильно .
Исходник программы в аттаче.
Вложение | Размер |
---|---|
MailClient.rar | 507.64 КБ |
- SanSanblch25RUS's блог
- Добавить комментарий
- 5070 просмотров
Комментарии
11 комментария(ев)Дата: СБ, 02/04/2011 - 21:21
Подобная статья уже была. Только там был компонент какой-то мудреный, я за*бался под него всякие модули и пакеты искать. Потом набрел на другой компонент попроще, наверное, здесь именно он. Посмотреть пока не могу - с мобилы сижу, попозже гляну с ноута. А так всё акейна, если не считать львиную долю откровенного копипаста
Дата: СБ, 02/04/2011 - 16:02
...ааа, слямзено у Владимира Лихоноса. Компонент рабочий под любыми версиями дельфей
.
Дата: СБ, 02/04/2011 - 20:11
Это больше статья чем блог
Но респект! И пусть говорят что такое уже было. Я всегда говорю, сколько людей - столько мнений. Приятно увидеть код другого человека. Всегда что-то, но можно упустить. А так посмотришь один код, потом другой и что-то да поймешь, как-то так 

Единственное хорошо бы не копипастить, а все таки вкладывать что-то свое, пусть и основанное на чужом коде
Дата: СБ, 02/04/2011 - 21:53
Цитировать
.....если рассматривать "общий" случай или если разными людьми написана одна программа. Да вот только в той статье, что уже была, и этой - компоненты разные, а значит большая часть кода отличается. Так что мало тут чего можно понять
Цитировать
Вот тут дааа... Хотя бы переписать имеющееся на свой лад, своими словами.
Неудобно, когда компонент с демкой в одной куче. Хорошо у демки имена файлов стандартные, а то пришлось бы разбираться что есть где
Больше "претензий" нет, все остальное клёво.
Дата: ВС, 03/04/2011 - 10:51
КАЮСЬ
Код не является гениальным, там все просто.
До создания этой программки я пересмотрел много похожих программ, там была одна проблема то компонент не работает, то вместо Mailclient Подсовывают ICQClient.
Я вообще-то не собирался его выкладывать, меня один пользователь попросил исходник , а потом долго мучил расспросами: "Что где и как ?".
Вот я и решил выложить.
Друзья вы не подскажите я сейчас не могу подкорректировать статью?
Дата: ВС, 03/04/2011 - 15:42
2SanSanblch25RUS
У тебя есть права на редактирование своей записи. Закладка "Редактировать" в верхней части блока с материалом
Дата: ВС, 03/04/2011 - 16:02
вчера вечером поглядел
упрощенный вариант мне понравился))
Дата: ВС, 03/04/2011 - 16:58
а я по-моему видел уже статью где-то, но там все было без мудреных компонентов...
Дата: Пнд, 04/04/2011 - 07:30
2rashking
Отправка почты из Delphi - тема не новая. Есть куча способов/компонентов, которые позволяют это сделать. Кстати, отправка почты из Delphi была первой темой статьи, которую я написал для VR-Online. Эх, давно же это было (в начале 2003).
Дата: Пнд, 04/04/2011 - 15:10
Цитировать
А разве это не МаилКлиент для общения? Замена аськи.....
Дата: Пнд, 04/04/2011 - 16:21
Хм, я текст сам не читал. По заголовку подумал, что это email-клиент. А тут оказывается mail агент.