Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Mail.Ru Agent


Автор: Zlo 13.5.2006, 22:15
Cобственно Mail.Ru Agent  хочу сделать альтернативу, может у когонить есть какиенить наброски на дельфях? 

Автор: Jey_k 13.5.2006, 23:22
Zlo, Да это в общем-то обычный mail-client. Просто чаще проверяющий ящик. Все через Indy можно сделать. В дельфе 7 в примерах есть вариант мэйл клиента. Его и возьми за основу.  

Автор: Poseidon 13.5.2006, 23:26
Цитата(Jey_k @  13.5.2006,  23:22 Найти цитируемый пост)
это в общем-то обычный mail-client. Просто чаще проверяющий ящик.
 Там вроди еще и игры внедрили. Точно не знаю, не использую smile
 

Автор: Jey_k 13.5.2006, 23:38
Цитата(Poseidon @  13.5.2006,  23:26 Найти цитируемый пост)
Там вроди еще и игры внедрили. Точно не знаю, не использую 
 

ну там есть подобие аси. Только основная функция агента проверять мыло и извещать о поступлении письма.  

Автор: Zlo 14.5.2006, 00:32
неменя интересует именно сообщения игры вроде как не очень еще там теперь смс можно отсылать и голосом базарить 

Автор: Poseidon 14.5.2006, 03:06
Цитата(Zlo @  14.5.2006,  00:32 Найти цитируемый пост)
неменя интересует именно сообщения 

Тогда используй TIdPop3 (поищи по форуму примеры)
 

Автор: Aleksiem 29.5.2006, 02:09
Наверное меня сейчас завалят критикой, как новичка на форуме но это далеко не mail-client это гораздо ближе к аське по протоколу, правда как мне кажется у аськи всё гораздо сложнее. А так там всё так же организовано, как и в аське есть свои пакеты, в том числе и когда приходит новое письмо, никакие ящики при этом проверять не надо. Даже есть оповещения о том, что собеседник печатает (так же как в ICQ-протоколе версии 11). Протокол открыт и доступен по адресу http://agent.mail.ru/dev-license.html. Многие мои знакомые используют его как замену аське. И компоненты типа POP3 здесь ну никак не уместны. Всё делается через обычные сокеты(типа ClientSocket). Сам делаю через winsock, чего и тебе советую. На ссылке всё подробно описано. если делал хоть раз аську или что-то подобное проблем не будет. 
З.Ы. Надеюсь тема ещё не потеряла свою актуальность 

Автор: Snowy 29.5.2006, 09:06
Цитата(Aleksiem @  29.5.2006,  02:09 Найти цитируемый пост)
Наверное меня сейчас завалят критикой, как новичка на форуме
Aleksiem, вовсе нет. Ты совершенно прав.
Просто не все знают, что такое маилрушный агент.
А вот, что у него протокол открытый - и я не знал.
За ссылку спасибо. 

Автор: Zlo 20.8.2006, 23:39
Snowy нету какихнить нароботок по вопросу? а то я тут вот за сокеты взялся, но даж незнаю  с чего начать, и что хорошего на руском почитать по этой теме не знаешь?

Автор: Snowy 21.8.2006, 09:26
Если с сетью не работал, то ты слишком круто взялся.
Потренеруйся для начала на более простых вещах.
Что почитать - даже не подскажу. Давно не интересовался этим вопросом.

Наработок пока нет. Точнее мне не попадались.
А свою делать - пока не до этого.
Ближайшие 2 месяца точно не возьмусь за этот вопрос.

Автор: Snowy 21.8.2006, 09:59
Приклеиваю заголовочный файл с типами и константами.
Могет кому понадобится.
Правда корректность не гарантирую - я просто сконвертил и довёл до компилируемого состояния.
Работоспособность не проверял.

Автор: ya_mag 20.4.2007, 09:39
извиняюсь за глупый вопрос а можно маленький пример как его использовать?

Автор: Snowy 20.4.2007, 10:24
Пример не получится.
Здесь только структуры и константы расписаны.
Чтобы использовать - нужно писать реализацию протокола.
Если напишешь - будешь первый smile

Автор: Rodeon 21.11.2009, 00:24
По ссылке выше качаем компонент, в нем файлы:
client.dcu
proto.dcu
pworks.dcu
base64.pas
client.pas
codes.pas
proto.pas
pworks.pas
Делал в Delphi 7, под 2009 чето не получилось установить этот компонент.
В делфях через меню Component\Install Component указываем путь к файлу client.pas, жмем ОК, в закладке Sample появился компонент MailClient - кидаем его на форму.
Также кидаем TCPClient - он нам нужен будет что бы узнавать адресс на который в последующем будет коннектиться клиент!
Кидаем кнопку и пару эдитов!
В первый edit вводим свой емайл вида "имя@домен.ру"
во второй edit вводим пароль к ящику!
Настраиваем пару свойств для TCPClient:
RemoteHost:=mrim.mail.ru;
RemotePort:=2042;
Настраиваем свойства для MailClient:
MRIMHost:=mrim.mail.ru;
MRIMPort:=2042;

для кнопки делаем свойства onclick
Код

procedure TForm.ButtonClick(Sender: TObject);
var
     i: Integer;
     MrimS: string;
begin
mailclient.Mail:=edit1.Text;
mailclient.PassWord:=edit2.Text;
     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));
                     break;
                 end;

     if MailClient.HostInit then
         MailClient.Connect  {Соеденяемься}
     else
         MailClient1.RequestHost;
end;

Далее обрабатываем соеденение, если оно наступило
Код

procedure TForm.MailClientConnect(Sender: TObject);
begin
MailClient.Hello;
end;

Затем еще Проходим авторизацию!
Код

procedure TForm.MailClientHello(Sender: TObject);
begin
     MailClient.Authorize;
end;


Конечное действие, если все прошло успешно, то подключение заканчивается загрузкой контакт листа
Код

procedure TForm.MailClientEndRequestContactList(Sender: TObject);
begin
{Тут выполняем необходимые действия}
end;

Как примеры:
Отправка СМСок:
Код

procedure TForm.Button2Click(Sender: TObject);
begin
     if MailClient.Connected then
         MailClient1.SendSMS(edit14.Text,edit15.Text);
end;

Edit14 и Edit15 соотвктственно телефон и само собщение!
Допустим надо найти людей (со строковыми переменными как передавать не разобрался, майловсцы молчат):
Первые три значения пустые - '' так и не понял как передать запрос текстовый, в каком формате!
(0-любой пол, 1-мужчина, 2 -женщина)
(возраст от)
(возраст до)
(город, береться по id из базы)
(знак зодиака, от 1 до 12)
(месяц рождения от 1 до 12)
(день рождения от 1 до 31)
(страна, опять же из базы, к примеру Россия код:24)
значение -1 в числовых параметрах распознаеться как "любое зачение"
как пример, что бы найти всех девушек в возрасте от 20 до 30 лет из россии надо передать строку
Код

procedure TForm.Button3Click(Sender: TObject);
begin
If MailClient.Connected then
MailClient.FindContact('','','',2,20,30,-1,-1,-1,-1,24,false);
end;

Все, ловим событие  MailClient UserFound, приходит строка со всеми данными о пользователе
За раз приходит только 1 найденный контакт, просто ставим событие, что как только находит сразу добавлять например в массив найденных, ищет за раз по 50 контактов, для следующего поиска еще раз отправлячем запрос на поиск.
Код

procedure TForm1.MailClient1UserFound(Sender: TObject; Status, FieldNum,
  MaxRows, ServerTime: Cardinal; User, Domain, Nickname, FistName,
  LastName, Sex, Birth_Day, IDCity, Location, Zodiac, BirthMonth, BirthDay,
  IDCountry, Phone, mrim_Status: String);
Begin
Memo.lines.add(User+'@'+Domain);
End;

Таким путем будет в мемо добавленно 50 найденных контактов!
В прикрепленном компоненте кажись урезанный вариант для рассылки СМСок, но в инете видел полный такой же компонент с указанием где и что именно измененно и путем обратных изменений получаем готовый СМС спаммер, сам не скажу точно, правда или нет, так как СМС меня не сильно интересовало!

Автор: cable 16.9.2010, 01:32
ни  как не поставить компонент  помогите  разобратся с ошибками 

  [Warning] Unit 'pworks' implicitly imported into package 'dclusr'
  [Warning] Unit 'proto' implicitly imported into package 'dclusr'
  [Warning] Unit 'Constants' implicitly imported into package 'dclusr'
  [Warning] Unit 'StringFunc' implicitly imported into package 'dclusr'
  [Warning] Unit 'Bodies' implicitly imported into package 'dclusr'


в результате нет компонента  

Автор: Rodeon 20.11.2010, 06:25
Пользуюсь 7 delphi. Выбираем Component - Install Component. В строке Unit file name указываем путь к файлу client.pas
жмем ОК
опять заходим в Component - New component. В Ancestor type набираем Tmail (после ввода tma остальное сам добьет).
В Pallete page выбираем куда установить - жмем Install

Не забываем добавлять путь к компоненту в библеотеке Tools - Enviroment options - Library - Library path

Автор: Dark0088 27.11.2010, 18:35
помогите у меня смска не приходит ,номер как указывать?при компиляции ошибок не возникает.

Автор: Dark0088 27.11.2010, 19:19
у меня не происходит коннект

Автор: Cash1 22.1.2012, 01:18
Пожалуста помогите у меня не получается с поиском, набрал как написано форуме но все равно нет рузултато!!!
помогите пожалуста!!!

Добавлено через 2 минуты и 13 секунд
Пожалуста помогите у меня не получается с поиском, набрал как написано форуме но все равно нет рузултато!!!
помогите пожалуста!!!

Автор: Rodeon 25.1.2012, 15:59
В этой ветке обновление:
http://forum.vingrad.ru/forum/topic-275368.html

Автор: Rodeon 30.1.2012, 00:15
Подправил поля поиска, теперь найденные данные соответствуют названиям полей.
Вот список полей:
Username, Domain, Nickname, FirstName, LastName, Sex, Birthday, Zodiac, Country_id, City_ID, Location, Phone, mrim_status, status_uri, status_title, status_desc, ua_features
Измененный клиент прикрепил!
Осталось пока непонятным в какой кодировке выдаются поля статусов, у меня либо "???" либо пусто пока?
Комментарий по status_desc:
описание статуса (до 255 символов)

Комментарий по status_title:
заголовок статуса (до 16 символов)

Комментарий по status_uri:
STATUS_ONLINE - 'В сети'
STATUS_AWAY - 'Отошел'
STATUS_INVISIBLE - 'Невидимый'
status_chat - 'Готов поболтать'
status_dnd - 'Не беспокоить'
status_0' - 'Отключен'
status_1' - 'В сети'
status_2 - 'Отошел'
status_3 - ' => 'Невидимый'
status_4 - 'Болею'
status_5 - 'Дома'
status_6 - 'Кушаю'
status_7 - 'Где я?'
status_8 - 'В туалете'
status_9 - 'Готовлю'
status_10 - 'Гуляю'
status_11 - 'Я Инопланетный разум!'
status_12 - 'Йа креветко!'
status_13 - 'Я потерялся!'
status_14 - 'Я сошел с ума!'
status_15 - 'Йа утко!'
status_16 - 'Играю'
status_17 - 'Курю'
status_18 - 'На работе'
status_19 - 'На встрече'
status_20 - 'Пью пиво'
status_21 - 'Пью кофе'
status_22 - 'Работаю'
status_23 - 'Сплю'
status_24 - 'Телефон'
status_26 - 'В институте'
status_27 - 'В школе'
status_28 - 'Вы ошиблись номером'
status_29 - ':-D'
status_30 - ';-)'
status_32 - '}smile'
status_33 - '8-)'
status_34 - ':-('
status_35 - ':\'('
status_36 - 'В шоке...'
status_37 - 'Злюсь!'
status_38 - 'Диабло!'
status_39 - '(_|_)'
status_40 - 'Сердце'
status_41 - 'Сплю'
status_42 - 'Cool!'
status_43 - 'Yo!'
status_44 - 'Фига'
status_45 - 'Fuck!'
status_46 - 'Череп'
status_47 - 'Ракета'
status_48 - 'Осминог'
status_49 - 'Коза'
status_50 - 'Bad!'
status_51 - 'Белка'
status_52 - 'Звезда'
status_53 - 'Музыка'

Автор: fucil 3.3.2012, 19:27
у меня схожий вопрос.

Перезалейте пожалуйста хочу глянуть код! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)