summaryrefslogtreecommitdiff
path: root/protocols/MRA/Docs/Mail.ru Agent.htm
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2012-05-18 12:40:57 +0000
committerGeorge Hazan <george.hazan@gmail.com>2012-05-18 12:40:57 +0000
commite52a0809b8274aea24d7398e87f34e4d78f9877c (patch)
tree1787bcac952dcea253c64842111c6be016fc3f70 /protocols/MRA/Docs/Mail.ru Agent.htm
parent371d5397795afd1d1aa65c4acacf7587ff0a110e (diff)
renamed help files for MRA
git-svn-id: http://svn.miranda-ng.org/main/trunk@40 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/MRA/Docs/Mail.ru Agent.htm')
-rw-r--r--protocols/MRA/Docs/Mail.ru Agent.htm635
1 files changed, 635 insertions, 0 deletions
diff --git a/protocols/MRA/Docs/Mail.ru Agent.htm b/protocols/MRA/Docs/Mail.ru Agent.htm
new file mode 100644
index 0000000000..43acddc9dd
--- /dev/null
+++ b/protocols/MRA/Docs/Mail.ru Agent.htm
@@ -0,0 +1,635 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!-- saved from url=(0097)http://agent.mail.ru/protocol.html?Submit=%CF%F0%E8%ED%E8%EC%E0%FE+%F1%EE%E3%EB%E0%F8%E5%ED%E8%E5 -->
+<!--//--><HTML><HEAD><TITLE>Mail.ru Агент</TITLE>
+<SCRIPT src="Mail.ru Agent.files/WindowOpen.js"></SCRIPT>
+<!--//-->
+<SCRIPT>PrxModAtr=1;</SCRIPT>
+<!--//-->
+<SCRIPT> function NoError(){return(true);} onerror=NoError; </SCRIPT>
+<!--//-->
+<SCRIPT> function moveTo(){return true;}function resizeTo(){return true;}</SCRIPT>
+
+<META
+content="Национальная почтовая служба @Mail.ru - лучшая бесплатная почта. Доступ к почте через POP/SMTP, веб- и wap-интерфейс. Также на портале: авто, новости, спорт, музыка, работа, знакомства, анекдоты, открытки, погода"
+name=DESCRIPTION>
+<META
+content="почта, бесплатная электронная почта, авто, новости, спорт, музыка, работа, знакомства, анекдоты, открытки, погода"
+name=Keywords>
+<META http-equiv=content-type content="text/html; charset=windows-1251"><LINK
+href="Mail.ru Agent.files/index.css" type=text/css rel=stylesheet><LINK
+href="Mail.ru Agent.files/proto.css" type=text/css rel=stylesheet>
+<META content="MSHTML 6.00.2900.2802" name=GENERATOR></HEAD>
+<BODY bottomMargin=0 bgColor=white leftMargin=0 topMargin=0 rightMargin=0
+marginwidth="0" marginheight="0">
+<CENTER>
+<TABLE class=top_menu cellSpacing=0 cellPadding=0 width="90%" border=0>
+ <TBODY>
+ <TR>
+ <TD class=bord_l><IMG height=1 src="Mail.ru Agent.files/0.gif"
+width=11></TD>
+ <TD noWrap><A href="http://r.mail.ru/cln2759/go.mail.ru" target=_top><IMG
+ height=16 alt=Поиск src="Mail.ru Agent.files/go-all.gif" width=16
+ align=absMiddle border=0></A>&nbsp;<A
+ href="http://r.mail.ru/cln2759/go.mail.ru/" target=_top>Поиск</A></TD>
+ <TD width="5%"><IMG height=1 src="Mail.ru Agent.files/0.gif" width=7></TD>
+ <TD noWrap><A href="http://r.mail.ru/cln2760/love.mail.ru"
+ target=_top><IMG height=16 alt=Знакомства
+ src="Mail.ru Agent.files/love-all.gif" width=16 align=absMiddle
+ border=0></A>&nbsp;<A href="http://r.mail.ru/cln2760/love.mail.ru"
+ target=_top>Знакомства</A></TD>
+ <TD width="5%"><IMG height=1 src="Mail.ru Agent.files/0.gif" width=7></TD>
+ <TD noWrap><A href="http://r.mail.ru/cln2761/cards.mail.ru"
+ target=_top><IMG height=16 alt=Открытки
+ src="Mail.ru Agent.files/cards-all.gif" width=16 align=absMiddle
+ border=0></A>&nbsp;<A href="http://r.mail.ru/cln2761/cards.mail.ru"
+ target=_top>Открытки</A></TD>
+ <TD width="5%"><IMG height=1 src="Mail.ru Agent.files/0.gif" width=7></TD>
+ <TD noWrap><A href="http://r.mail.ru/cln2762/chat.mail.ru"
+ target=_top><IMG height=16 alt=Чаты src="Mail.ru Agent.files/chat-all.gif"
+ width=16 align=absMiddle border=0></A>&nbsp;<A
+ href="http://r.mail.ru/cln2762/chat.mail.ru" target=_top>Чаты</A></TD>
+ <TD width="5%"><IMG height=1 src="Mail.ru Agent.files/0.gif" width=7></TD>
+ <TD noWrap><A href="http://r.mail.ru/cln2763/content.mail.ru/"
+ target=_top><IMG height=16 alt=Рассылки
+ src="Mail.ru Agent.files/content-all.gif" width=16 align=absMiddle
+ border=0></A>&nbsp;<A href="http://r.mail.ru/cln2763/content.mail.ru/"
+ target=_top>Рассылки</A></TD>
+ <TD width="5%"><IMG height=1 src="Mail.ru Agent.files/0.gif" width=7></TD>
+ <TD noWrap><A href="http://r.mail.ru/cln2764/molotok.ru/" target=_top><IMG
+ height=16 alt=Молоток src="Mail.ru Agent.files/molotok-all.gif" width=16
+ align=absMiddle border=0></A>&nbsp;<A
+ href="http://r.mail.ru/cln2764/molotok.ru/" target=_top>Молоток</A></TD>
+ <TD width="5%"><IMG height=1 src="Mail.ru Agent.files/0.gif" width=7></TD>
+ <TD noWrap><A href="http://r.mail.ru/cln2765/tour.torg.ru/"
+ target=_top><IMG height=16 alt=Путешествия
+ src="Mail.ru Agent.files/tour-all.gif" width=16 align=absMiddle
+ border=0></A>&nbsp;<A href="http://r.mail.ru/cln2765/travel.mail.ru/"
+ target=_top>Путешествия</A></TD>
+ <TD width="5%"><IMG height=1 src="Mail.ru Agent.files/0.gif" width=7></TD>
+ <TD noWrap><A href="http://r.mail.ru/cln2766/auto.mail.ru/"
+ target=_top><IMG height=16 alt=Авто src="Mail.ru Agent.files/cars-all.gif"
+ width=16 align=absMiddle border=0></A>&nbsp;<A
+ href="http://r.mail.ru/cln2766/auto.mail.ru/" target=_top>Авто</A></TD>
+ <TD width="5%"><IMG height=1 src="Mail.ru Agent.files/0.gif" width=9></TD>
+ <TD noWrap><IMG height=16 src="Mail.ru Agent.files/0.gif" width=16
+ align=absMiddle border=0><A href="http://r.mail.ru/cln2767/mail.ru/all/"
+ target=_top><B>Все проекты</B></A></TD>
+ <TD class=bord_r><IMG height=1 src="Mail.ru Agent.files/0.gif"
+ width=10></TD></TR>
+ <TR>
+ <TD class=bord_b noWrap width="100%" colSpan=19><IMG height=1
+ src="Mail.ru Agent.files/1.gif" width=1></TD></TR></TBODY></TABLE><!-- JS Banner blocked -->
+<SCRIPT language=ShonenScript><!--
+d=document;a='';a+=';r='+escape(d.referrer)
+js=10
+//--></SCRIPT>
+
+<SCRIPT language=JavaScript1.1><!--
+a+=';j='+navigator.javaEnabled()
+js=11
+//--></SCRIPT>
+
+<SCRIPT language=JavaScript1.2><!--
+s=screen;a+=';s='+s.width+'*'+s.height
+a+=';d='+(s.colorDepth?s.colorDepth:s.pixelDepth)
+js=12
+//--></SCRIPT>
+
+<SCRIPT language=JavaScript1.3><!--
+js=13
+//--></SCRIPT>
+
+<SCRIPT language=JavaScript><!--
+d.write('<img src="http://top.list.ru/counter'+
+'?id=575536;js='+js+a+';rand='+Math.random()+
+'" height=1 width=1><br>')
+if(js>11)d.write('<'+'!-- ')
+//--></SCRIPT>
+<NOSCRIPT><IMG height=1 src="" width=1><BR></NOSCRIPT>
+<SCRIPT language=JavaScript><!--
+if(js>11)d.write('--'+'>')
+//--></SCRIPT>
+<!--/TopList COUNTER-->
+<CENTER><A href="http://top100.rambler.ru/top100/" target=_top><FONT color=red
+size=1>[Rambler's Top100]</FONT><BR></A></CENTER>
+<TABLE cellSpacing=0 cellPadding=0 width="90%" align=center border=0>
+ <TBODY>
+ <TR>
+ <TD class=header width="100%">
+ <DIV class=cor><IMG height=1 src="Mail.ru Agent.files/1.gif"
+width=1></DIV>
+ <TABLE height=45 cellSpacing=0 cellPadding=0 width="100%" border=0>
+ <TBODY>
+ <TR>
+ <TD class=head height=44><A href="http://agent.mail.ru/"
+ target=_top><IMG height=20 alt=Агент
+ src="Mail.ru Agent.files/agentlogo.gif" width=59 border=0></A><A
+ href="http://mail.ru/" target=_top><IMG height=20 alt=mail.ru
+ src="Mail.ru Agent.files/_mail.gif" width=104 border=0></A></TD>
+ <TD width=00%>
+ <P class=button2><A class=but title=загрузить
+ href="http://agent.mail.ru/magent.exe"
+ target=_top>загрузить</A></P></TD>
+ <TD>
+ <P class=sog><A href="http://www.mail.ru/pages/help/182.html"
+ target=_top>Пользовательское<BR>соглашение</A></P></TD></TR></TBODY></TABLE><IMG
+ height=1 src="Mail.ru Agent.files/0.gif" width=760><BR>
+ <DIV class=cor><IMG height=1 src="Mail.ru Agent.files/1.gif"
+ width=1></DIV></TD></TR>
+ <TR>
+ <TD colSpan=3><IMG height=10 src="Mail.ru Agent.files/0.gif"
+ width=1></TD></TR></TBODY></TABLE>
+<TABLE cellSpacing=0 cellPadding=0 width="90%" border=0>
+ <TBODY>
+ <TR><!-- START: LeftCell -->
+ <TD vAlign=top width="23%">
+ <TABLE class=frame cellSpacing=0 cellPadding=0 width="100%" border=0>
+ <TBODY>
+ <TR>
+ <TD class=cor align=right height=1><IMG height=1
+ src="Mail.ru Agent.files/1.gif" width=1></TD></TR>
+ <TR>
+ <TD class=cont>
+ <UL class=mmenu>
+ <LI><A href="http://agent.mail.ru/pusk.html">Загрузка и
+ установка</A>
+ <LI><A href="http://agent.mail.ru/setting.html">Настройка контакт
+ листа</A>
+ <LI><SPAN class=speak>Общение</SPAN>
+ <UL class=smenu type=disc>
+ <LI><A href="http://agent.mail.ru/mess.html">Переписка</A>
+ <LI><A href="http://agent.mail.ru/chat.html">Общение в чате</A>
+ <LI><A href="http://agent.mail.ru/voice.html">Голосовое
+ общение</A>
+ <LI><A href="http://agent.mail.ru/avatar.html">Образы</A>
+ </LI></UL>
+ <LI><A href="http://agent.mail.ru/notifs.html">Оповещения</A>
+ <LI><A href="http://agent.mail.ru/games.html">Игры</A>
+ <LI><A href="http://agent.mail.ru/help.html">Частые вопросы</A>
+ <LI class=ai>Разработчикам </LI></UL></TD></TR>
+ <TR>
+ <TD class=cor align=right height=1><IMG height=1
+ src="Mail.ru Agent.files/1.gif" width=1></TD></TR></TBODY></TABLE><IMG
+ height=10 src="Mail.ru Agent.files/0.gif" width=195><BR></TD><!-- END: LeftCell -->
+ <TD width="2%"><IMG height=1 src="Mail.ru Agent.files/0.gif" width=10></TD><!-- START: MainCell -->
+ <TD class=text vAlign=top width="75%">
+ <H1>Описание протокола</H1>
+ <P>MMP - протокол соединения Mail.Ru Агента с общей сетью Mail.Ru.
+ Рекомендованный для соединения сервер в любой момент времени можно
+ получить в текстовом формате <I>ip:port</I> по адресу <B
+ class=blue>mrim.mail.ru:443</B> и <B class=blue>mrim.mail.ru:2042</B>.
+ Взаимодействие с сервером происходит поверх постоянно установленного
+ tcp-соединения посредством асинхронного обмена командами. Инициатором
+ установления соединения может быть только клиент, команды могут посылаться
+ как клиентом, так и сервером.</P>
+ <P>MMP бинарный протокол. Все числовые данные передаются как
+ четырехбайтные целые НЕ в сетевом формате, т. е. первым идет старший байт,
+ последним младший. Четырехбайтовые беззнаковые целые обозначаются
+ <B>UL</B>.</P>
+ <P>Текстовые данные передаются с префексированной длиной, т. е. сначала
+ <B>UL</B>, а потом строка (в кодировке windows-1251) длины <B>UL</B> без
+ завершающего нуля. Обозначение в дальнейшем - <B>LPS</B>.</P>
+ <P>Тип данных <B>UIDL</B> используется только при работе с оставленными на
+ сервере сообщениями. <B>UIDL</B> - последовательность из 8 символов из
+ множества <SPAN class=c>[a-z A-Z 0-9 _ - = +]</SPAN>.</P>
+ <P>Каждая команда или ответ на нее начинаются с заголовка. Поля
+ указываемые в заголовке:
+ <UL>
+ <LI>волшебный ключ, указывающий на то, что это действительно пакет MMP -
+ версия MMP, поддерживаемая отправителем пакета (текущая версия - 1.7)
+ <LI>номер отправляемой команды в текущем соединении. Ответ на команду
+ должен иметь тот же номер, что и сама команда.
+ <LI>тип пакета, номер команды и/или ответа
+ <LI>длинна данных пакета (без учета заголовка). При обработке посылаемых
+ сервером данных длина пакета должна иметь приоритет перед списком его
+ параметров, т. к. в следующих версиях протокола могут появляться новые
+ параметры и все они будут дописываться в конец пакета.
+ <LI>порт и ip (в <I>inet_aton()</I> формате) с которых установлено
+ соединение </LI></UL>
+ <P></P><BR>
+ <P>В синтаксисе языка С: <PRE style="MARGIN-TOP: 8px">Заголовок пакета
+{
+ u_long magic;
+ u_long proto;
+ u_long seq;
+ u_long msg;
+ u_long dlen;
+ u_long from;
+ u_long fromport;
+ u_char reserved[16];
+}
+</PRE>
+ <P>Вам понадобится заголовочный файл на языке C. Взять его можно <A
+ href="http://agent.mail.ru/proto.h" target=_top>здесь</A>. </P>
+ <P>&nbsp;</P>
+ <H2>Последовательность команд</H2>
+ <P>После установки tcp-соединения клиент обязан сразу послать <SPAN
+ class=c>MRIM_CS_HELLO</SPAN>, дождаться <SPAN
+ class=c>MRIM_CS_HELLO_ACK</SPAN>, после чего отправить <SPAN
+ class=c>MRIM_CS_LOGIN2</SPAN> и начать посылать <SPAN
+ class=c>MRIM_CS_PING</SPAN> с установленным в <SPAN
+ class=c>MRIM_CS_HELLO_ACK</SPAN> интервалом. В случае успешной авторизации
+ дальнейшие пакеты (кроме <SPAN class=c>MRIM_CS_PING</SPAN>) должны
+ отправляться только в случае пользовательских действий (написания новых
+ сообщений и т. п.) или ответа на пакеты получаемые от сервера.</P>
+ <H2 class=pt10>Типы пакетов</H2>
+ <P class=pack2><U>Тип пакета:</U> cs - Client -&gt; Server<BR><U>Тип
+ пакета:</U> sc - Server -&gt; Client</P>
+ <H2 class=pt10>Пакеты</H2>
+ <UL class=pack>
+ <LI><U>Пакет:</U> <B>Установка соединения</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_HELLO</SPAN><BR><U>Ответ:</U> <SPAN
+ class=c>MRIM_CS_HELLO_ACK</SPAN><BR><U>Тип пакета:</U>
+ cs<BR><U>Описание:</U> Первый пакет, отправляемый на сервер. </P>
+ <LI><U>Пакет:</U> <B>Подтверждение установки соединения</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_HELLO_ACK</SPAN><BR><U>Тип пакета:</U>
+ sc<BR><U>Параметры:</U></P>
+ <P class=code>UL ## ping_period ## Ожидаемая частота подтверждения
+ соединения (в секундах)</P>
+ <P class=pack2><U>Описание:</U> Подтверждает возможность соединения и
+ сообщает клиенту интервал, с которым надо отправлять пакеты контроля
+ соединения. </P>
+ <LI><U>Пакет:</U> <B>Успешная авторизация</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_LOGIN_ACK</SPAN><BR><U>Тип пакета:</U>
+ sc<BR><U>Описание:</U> Сообщает, что пара логин-пароль была верна и
+ клиент успешно авторизовался в сети агента. </P>
+ <LI><U>Пакет:</U> <B>Неверная авторизация</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_LOGIN_REJ</SPAN><BR><U>Тип пакета:</U>
+ sc<BR><U>Параметры:</U></P>
+ <P class=code>LPS ## reason ## причина отказа</P>
+ <P class=pack2><U>Описание:</U> Сообщает, что пара логин-пароль была
+ неверна, и соединение будет завершено. </P>
+ <LI><U>Пакет:</U> <B>Контроль соединения</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_PING</SPAN><BR><U>Тип пакета:</U> cs<BR><U>Описание:</U>
+ Отправка этого пакета подтверждает для сервера, что клиент активен.
+ Пакет должен отправляться с интервалом, определенным в <SPAN
+ class=c>MRIM_CS_HELLO_ACK.</SPAN> </P>
+ <LI><U>Пакет:</U> <B>Сообщение</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_MESSAGE</SPAN><BR><U>Тип пакета:</U> cs<BR>поле seq
+ должно содержать номер, который в последствии будет содержаться в
+ заголовке пакета <SPAN class=c>MRIM_CS_MESSAGE_STATUS</SPAN>,
+ оповещающем клиента о статусе доставки данного
+ сообщения.<BR><U>Параметры:</U></P>
+ <P class=code>UL ## flags ## флаги ##</P>
+ <P class=code style="MARGIN-LEFT: 20px">MESSAGE_FLAG_OFFLINE ##
+ Сообщение пришло, пока клиент был отключен<BR>MESSAGE_FLAG_NORECV ##
+ Отправителю сообщения не требуется подтверждения
+ доставки<BR>MESSAGE_FLAG_AUTHORIZE ## Сообщение является запросом на
+ авторизацию<BR>MESSAGE_FLAG_SYSTEM ## Сообщение является системным
+ уведомлением администрации<BR>MESSAGE_FLAG_RTF ## В сообщении содержится
+ форматированная часть<BR>MESSAGE_FLAG_CONTACT ## Сообщение представляет
+ из себя пересланный список контактов. Текст сообщения в этом случае
+ должен представлять из себя список адресов и ников пересылаемых
+ контактов, перечисленных через точку с запятой.
+ &lt;адрес1&gt;;&lt;ник1&gt;;&lt;адрес2&gt;;&lt;ник2&gt;;&lt;адрес3&gt;;&lt;ник3&gt;;...<BR>MESSAGE_FLAG_NOTIFY
+ ## Это сообщение-уведомление "Вам пишут". Должно посылаться каждые 10
+ секунд, при более длинной паузе клиент-получатель должен считать, что
+ отправитель прекратил написание. Текст такого сообщения должен состоять
+ из одного пробела.<BR>MESSAGE_FLAG_MULTICAST ## Сообщение направлено
+ списку получателей, а не одному. Поле to в таком случае состоит из
+ списка получателей, перечисленных через запятую. Максимальная длина
+ списка - 50 адресов.</P>
+ <P class=code>LPS ## to ## email получателя<BR>LPS ## message ##
+ текстовая версия отправляемого сообщения<BR>LPS ## rtf-message ##
+ отформатированная версия отправляемого сообщения, в случае наличия обоих
+ версий сообщения приоритет имеет rtf-версия. Она должна содержать
+ rtf-текст упакованный gzip в base64 представлении. То есть: <PRE style="MARGIN: 0px 0px 0px 10px">BASE64(
+ GZIP(
+ UL количество LPS (должно быть не менее 2)
+ LPS rtf_text_with_all_rtf_headers_and_tags
+ LPS цвет фона в виде UL
+ )
+ )
+ </PRE>
+ <P></P>
+ <P class=pack2><U>Описание:</U> Основной пакет взаимодействия между
+ двумя клиентами. Может быть отправлено в любой момент по инициативе
+ клиента. Ни текстовая, ни rtf части сообщений не могут быть пустыми, при
+ необходимости следует использовать строку из одного пробела.</P>
+ <LI><U>Пакет:</U> <B>Доставка сообщения</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_MESSAGE_ACK</SPAN><BR><U>Тип пакета:</U>
+ sc<BR><U>Параметры:</U></P>
+ <P class=code>UL ## msg_id ## Номер пакета (Sequence) этого сообщения
+ для отправителя<BR>UL ## flags ## Возможные значения описаны в
+ MRIM_CS_MESSAGE<BR>LPS ## from ## Адрес отправителя<BR>LPS ## message ##
+ текстовая версия сообщения<BR>LPS ## rtf-message ## форматированная
+ версия сообщения</P>
+ <P class=pack2><U>Описание:</U> </P>
+ <LI><U>Пакет:</U> <B>Подтверждение получения сообщения</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_MESSAGE_RECV</SPAN><BR><U>Тип пакета:</U>
+ cs<BR><U>Параметры:</U></P>
+ <P class=code>LPS ## from ##<BR>UL ## msg_id ##</P>
+ <P class=pack2><U>Описание:</U> Отправляется получателем сообщения сразу
+ после прихода <SPAN class=c>MRIM_CS_MESSAGE_ACK</SPAN>, если флаги <SPAN
+ class=c>MRIM_CS_MESSAGE_ACK</SPAN> не содержали <SPAN
+ class=c>MESSAGE_FLAG_NORECV</SPAN>. <SPAN class=c>from</SPAN> и <SPAN
+ class=c>msg_id</SPAN> должны быть скопированы из <SPAN
+ class=c>MRIM_CS_MESSAGE_ACK</SPAN> и имеют то же значение. </P>
+ <LI><U>Пакет:</U> <B>Подтверждение доставки сообщения</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_MESSAGE_STATUS</SPAN><BR><U>Тип пакета:</U> sc<BR>Поле
+ seq численно равно полю seq пакета <SPAN
+ class=c>MRIM_CS_MESSAGE</SPAN><BR><U>Параметры:</U></P>
+ <P class=code>UL ## status ## статус доставки ##</P>
+ <P class=code style="MARGIN-LEFT: 20px">MESSAGE_DELIVERED ## Сообщение
+ успешно доставлено<BR>MESSAGE_REJECTED_INTERR ## Произошла внутренняя
+ ошибка<BR>MESSAGE_REJECTED_NOUSER ## Не существует
+ пользователя-получателя сообщения<BR>MESSAGE_REJECTED_LIMIT_EXCEEDED ##
+ Пользователь-получатель в данный момент отключен от сети, и сообщение не
+ помещается в его почтовый ящик<BR>MESSAGE_REJECTED_TOO_LARGE ## Размер
+ сообщения превышает максимально
+ допустимый<BR>MESSAGE_REJECTED_DENY_OFFMSG ## Пользователь-получатель в
+ данный момент отключен от сети, а настройки его почтового ящика не
+ допускают наличие оффлайновых сообщений агента</P>
+ <P class=pack2><U>Описание:</U> Отправленное сообщение считается
+ доставленным только после получения этого ответа сервера. Сервер НЕ
+ ГАРАНТИРУЕТ доставку сообщения. В случае отстутствия <SPAN
+ class=c>MRIM_CS_MESSAGE_STATUS</SPAN> более интервала подтверждения
+ соединения, программа клиент должна послать сообщение повторно или
+ проинформировать пользователя о невозможности доставки из-за проблем
+ связи получателя. </P>
+ <LI><U>Пакет:</U> <B>Смена статуса другого пользователя</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_USER_STATUS</SPAN><BR><U>Тип пакета:</U>
+ sc<BR><U>Параметры:</U></P>
+ <P class=code>UL ## status ## новый статус пользователя ##</P>
+ <P class=code style="MARGIN-LEFT: 20px">STATUS_OFFLINE ## Пользователь
+ отключен от сети Агента<BR>STATUS_ONLINE ## Пользователь находится в
+ сети<BR>STATUS_AWAY ## Пользователь в сети, но отошел от
+ компьютера<BR>STATUS_UNDETERMINATED ## Настройки пользователя запрещают
+ показывать его статус<BR>STATUS_FLAG_INVISIBLE ## Пользователь находится
+ в сети, но невидим для всех, кроме привилегированных пользователей из
+ его списка видимости.</P>LPS ## user ## email сменившего свой статус
+ пользователя
+ <P></P>
+ <P class=pack2><U>Описание:</U> Это сообщение отправляется сервером при
+ смене статуса пользователям всем тем, у кого он находится в
+ контакт-листе (за исключением группы "Жду Авторизации" и тех, кого он
+ включил в список игнорируемых или невидящих). Данное сообщение может
+ быть доставлено клиенту ДО получения им контакт-листа. В такой ситуации
+ оно должно игнорироваться. </P>
+ <LI><U>Пакет:</U> <B>Закрытие соединения</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_LOGOUT</SPAN><BR><U>Тип пакета:</U>
+ sc<BR><U>Параметры:</U></P>
+ <P class=code>UL ## reason ## причина отключения ##</P>
+ <P class=code style="MARGIN-LEFT: 20px">LOGOUT_NO_RELOGIN_FLAG ##
+ Пользователь отключен из-за параллельного входа с его логином. Клиент не
+ должен осуществлять автоматический перезаход в этом случае.</P>
+ <LI><U>Пакет:</U> <B>Изменение параметров соединения</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_CONNECTION_PARAM</SPAN><BR><U>Тип пакета:</U>
+ sc<BR><U>Параметры:</U></P>
+ <P class=code>UL ## ping_period ## новая ожидаемая частота подтверждения
+ соединения</P>
+ <P class=pack2><U>Описание:</U> Ближайший <SPAN
+ class=c>MRIM_CS_PING</SPAN> следует отправлять уже исходя из новой
+ частоты. </P>
+ <LI><U>Пакет:</U> <B>Добавление нового контакта</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_ADD_CONTACT</SPAN><BR><U>Тип пакета:</U>
+ cs<BR><U>Параметры:</U></P>
+ <P class=code>UL ## flags ## флаги ##</P>
+ <P class=code style="MARGIN-LEFT: 20px">CONTACT_FLAG_GROUP ##
+ Добавляется новая группа, а не контакт (несовместим с остальными).
+ Верхний байт содержит количество уже имеющихся групп в
+ контакт-листе<BR>CONTACT_FLAG_INVISIBLE ## Контакт должен попасть в
+ список "Я всегда невидим для"<BR>CONTACT_FLAG_VISIBLE ## Контакт должен
+ попасть в список "Я всегда видим для"<BR>CONTACT_FLAG_IGNORE ## Контакт
+ должен попасть в список игнорируемых<BR>CONTACT_FLAG_SHADOW ## Контакт
+ не должен попасть в основной контакт-лист (применяется в паре с одним из
+ трех предыдущих)<BR>CONTACT_FLAG_REMOVED ## Контакт удален</P>
+ <P class=code>UL ## group_id ## группа, в которую должен быть добавлен
+ контакт (для CONTACT_FLAG_GROUP равно 0)<BR>LPS ## email ## добавляемый
+ адрес (имя группы для CONTACT_FLAG_GROUP)<BR>LPS ## name ## ник
+ добавляемого пользователя (для отображения в контакт-листе, не
+ посылается для CONTACT_FLAG_GROUP) LPS ## unused ## неиспользуемый
+ параметр </P>
+ <LI><U>Пакет:</U> <B>Подтверждение добавления контакта</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_ADD_CONTACT_ACK</SPAN><BR><U>Тип пакета:</U>
+ sc<BR><U>Параметры:</U></P>
+ <P class=code>UL ## status ## результат операции ##</P>
+ <P class=code style="MARGIN-LEFT: 20px">CONTACT_OPER_SUCCESS ##
+ добавление произведено успешно<BR>CONTACT_OPER_ERROR ## переданные
+ данные были некорректны<BR>CONTACT_OPER_INTERR ## при обработке запроса
+ произошла внутренняя ошибка<BR>CONTACT_OPER_NO_SUCH_USER ## добавляемого
+ пользователя не существует в системе<BR>CONTACT_OPER_INVALID_INFO ##
+ некорректное имя пользователя<BR>CONTACT_OPER_USER_EXISTS ##
+ пользователь уже есть в контакт-листе<BR>CONTACT_OPER_GROUP_LIMIT ##
+ превышено максимально допустимое количество групп (20)</P>
+ <P class=code>## UL ## contact_id ## присвоенный новому контакту
+ номер</P>
+ <P class=pack2><U>Описание:</U> Приходит в ответ на <SPAN
+ class=c>MRIM_CS_ADD_CONTACT</SPAN>. -1 если <SPAN class=c>status</SPAN>
+ не равен <SPAN class=c>CONTACT_OPER_SUCCESS</SPAN>. </P>
+ <LI><U>Пакет:</U> <B>Изменение контакта</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_MODIFY_CONTACT</SPAN><BR><U>Тип пакета:</U>
+ cs<BR><U>Параметры:</U></P>
+ <P class=code>UL ## id ## номер модифицируемого контакта<BR>UL ## flags
+ ##<BR>UL ## group_id ## Равно 0 для группы<BR>LPS ## contact ## Если
+ группа, то имя группы<BR>LPS ## name ## Если группа, то имя группы</P>
+ <P class=pack2><U>Описание:</U> Параметры те же, что и у <SPAN
+ class=c>MRIM_CS_ADD_CONTACT</SPAN>. <SPAN class=c>contact</SPAN> до и
+ после изменения обязаны совпадать. </P>
+ <LI><U>Пакет:</U> <B>Подтверждение изменения контакта</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_MODIFY_CONTACT_ACK</SPAN><BR><U>Тип пакета:</U>
+ sc<BR><U>Параметры:</U></P>
+ <P class=code>UL ## status ## Результат операции. Значения имеют тот же
+ смысл, что и в MRIM_CS_ADD_CONTACT_ACK</P>
+ <LI><U>Пакет:</U> <B>Сообщение доставленное, пока пользователь не был
+ подключен к сети</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_OFFLINE_MESSAGE_ACK</SPAN><BR><U>Тип пакета:</U>
+ sc<BR><U>Параметры:</U></P>
+ <P class=code>UIDL ## uidl ## id сообщения<BR>LPS ## message ##
+ сообщение. Сообщение приходит в формате RFC/822 письма. Отправитель
+ сообщения хранится в заголовке From, дата в заголовке Date, флаги
+ сообщения в X-MRIM-FLAGS, текстовая и форматированная версии сообщения
+ составляют текст письма и разделяются между собой разделителем из
+ заголовка Boundary.</P>
+ <P class=pack2><U>Описание:</U> Каждое полученное за время отсутствия
+ сообщение приходит отдельным пакетом в том порядке, в каком они
+ поступали на сервер. </P>
+ <LI><U>Пакет:</U> <B>Удаление сохраненного сообщения</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_OFFLINE_MESSAGE_DEL</SPAN><BR><U>Тип пакета:</U>
+ cs<BR><U>Параметры:</U></P>
+ <P class=code>UIDL ## uidl</P>
+ <P class=pack2><U>Описание:</U> На каждый полученный <SPAN
+ class=c>MRIM_CS_OFFLINE_MESSAGE_ACK</SPAN> клиент обязан отправить <SPAN
+ class=c>MRIM_CS_OFFLINE_MESSAGE_DEL</SPAN> с тем же <SPAN
+ class=c>uidl</SPAN>, подтверждающий получение данного сообщения.
+ Сообщение стирается на сервере только при получении этой команды.</P>
+ <LI><U>Пакет:</U> <B>Авторизация пользователя на добавление в
+ контакт-лист</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_AUTHORIZE</SPAN><BR><U>Тип пакета:</U>
+ cs<BR><U>Параметры:</U></P>
+ <P class=code>LPS ## user ## email пользователя</P>
+ <P class=pack2><U>Описание:</U> Отправляется, чтобы разрешить <SPAN
+ class=c>user</SPAN> добавление пользователя в контакт-лист и наблюдение
+ за его статусом. </P>
+ <LI><U>Пакет:</U> <B>Информация об авторизации</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_AUTHORIZE_ACK</SPAN><BR><U>Тип пакета:</U>
+ sc<BR><U>Параметры:</U></P>
+ <P class=code>LPS ## user ## email авторизовавшего пользователя</P>
+ <P class=pack2><U>Описание:</U> Отсылается сервером после получением им
+ <SPAN class=c>MRIM_CS_AUTHORIZE</SPAN> от <SPAN class=c>user</SPAN>
+ тому, кого <SPAN class=c>user</SPAN> авторизовал. </P>
+ <LI><U>Пакет:</U> <B>Изменение статуса</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_CHANGE_STATUS</SPAN><BR><U>Тип пакета:</U>
+ cs<BR><U>Параметры:</U></P>
+ <P class=code>UL ## status ## возможные значения совпадают с
+ MRIM_CS_USER_STATUS, но не могут посылаться статусы
+ STATUS_UNDETERMINATED и STATUS_OFFLINE</P>
+ <LI><U>Пакет:</U> <B>Требование ключа для web-авторизации</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_GET_MPOP_SESSION</SPAN><BR><U>Тип пакета:</U>
+ cs<BR><U>Описание:</U> Пользователь агента может заходить в почтовый
+ ящик Mail.Ru без дополнительной авторизации и не передавая свой пароль в
+ GET-запросе, для этого используется механизм ключей. </P>
+ <LI><U>Пакет:</U> <B>Ключ для web-авторизации</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_GET_MPOP_SESSION_ACK</SPAN><BR><U>Тип пакета:</U>
+ sc<BR><U>Параметры:</U></P>
+ <P class=code>UL ## status ## успешность операции (1 - ключ получен, 0 -
+ произошла ошибка)<BR>LPS ## session ## сам ключ</P>
+ <P class=pack2><U>Описание:</U> Для входа в ящик можно использовать URL
+ win.mail.ru/cgi-bin/auth?Login=email&amp;agent=ключ. </P>
+ <LI><U>Пакет:</U> <B>Поиск контакта</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_WP_REQUEST</SPAN><BR><U>Тип пакета:</U>
+ cs<BR><U>Параметры:</U></P>
+ <P class=code>UL ## field ## параметр поиска ##</P>
+ <P class=code style="MARGIN-LEFT: 20px">MRIM_CS_WP_REQUEST_PARAM_USER ##
+ логин (без домена), обязан комбинироваться с
+ доменом<BR>MRIM_CS_WP_REQUEST_PARAM_DOMAIN ## почтовый
+ домен<BR>MRIM_CS_WP_REQUEST_PARAM_NICKNAME ##
+ ник<BR>MRIM_CS_WP_REQUEST_PARAM_FIRSTNAME ## имя
+ <BR>MRIM_CS_WP_REQUEST_PARAM_LASTNAME ## фамилия, * в конце
+ ника/имени/фамилии указывает на возможность любого продолжения
+ имени<BR>MRIM_CS_WP_REQUEST_PARAM_SEX ## пол. 1 - мужской, 2 -
+ женский<BR>MRIM_CS_WP_REQUEST_PARAM_DATE1 ## минимальный возраст (в
+ годах)<BR>MRIM_CS_WP_REQUEST_PARAM_DATE2 ## максимальный возраст (в
+ годах)<BR>MRIM_CS_WP_REQUEST_PARAM_CITY_ID ## ID региона проживания
+ <BR>MRIM_CS_WP_REQUEST_PARAM_ZODIAC ## Знак зодиака (Овен - 1, ..., Рыбы
+ - 12)<BR>MRIM_CS_WP_REQUEST_PARAM_BIRTHDAY_MONTH ## Месяц рождения
+ (Январь - 1, ..., Декабрь - 12)<BR>MRIM_CS_WP_REQUEST_PARAM_BIRTHDAY_DAY
+ ## День рождения (обязан комбинироваться с месяцем
+ рождения)<BR>MRIM_CS_WP_REQUEST_PARAM_COUNTRY_ID ## ID страны
+ проживания<BR>MRIM_CS_WP_REQUEST_PARAM_ONLINE ## ищем ли мы только
+ подключенных в данный момент пользователей (1)</P>
+ <P class=code>LPS ## value все параметры в строковом формате, включая
+ числа</P>
+ <P class=pack2><U>Описание:</U> Поиск контактов в базе агента. Параметры
+ поиска передаются парами параметр-значение. Передача нескольких
+ параметров имеет семантику "и", т. е. все найденные результаты должны
+ соответствовать всем переданным параметрам. Комбинироваться могут все
+ параметры за исключением логина и домена (они обязаны идти парой и не
+ могут комбинироваться с другими параметрами) в порядке соответствующем
+ порядку описания (за исключением требования для <SPAN
+ class=c>MRIM_CS_WP_REQUEST_PARAM_ONLINE</SPAN> быть последним в списке).
+ </P>
+ <LI><U>Пакет:</U> <B>Найденные пользователи</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_ANKETA_INFO</SPAN><BR><U>Тип пакета:</U>
+ cs<BR><U>Параметры:</U></P>
+ <P class=code>UL ## status ## успешность запроса ##</P>
+ <P class=code style="MARGIN-LEFT: 20px">MRIM_ANKETA_INFO_STATUS_OK ##
+ поиск успешно завершен<BR>MRIM_ANKETA_INFO_STATUS_NOUSER ## не найдено
+ ни одной подходящей записи<BR>MRIM_ANKETA_INFO_STATUS_RATELIMERR ##
+ слишком много запросов, поиск временно запрещен</P>
+ <P class=code>UL ## fields_num ## количество полей в анкете каждого
+ пользователя<BR>UL ## max_rows ## текущее ограничение на количество
+ результатов поиска (может быть больше, чем количество строк в данном
+ ответе)<BR>UL ## server_time ## текущее время на сервере (должно
+ использоваться для вычисления возраста). Формат времени: Количество
+ секунд с 00:00:00 1 января 1970 года.<BR>LPS, LPS, ... ## fields ##
+ названия полей текущей анкеты (всего fields_num штук)<BR>LPS, LPS, ...
+ ## values ## значения полей анкеты для каждого найденного по запросу
+ пользователя в том же порядке, что в списке полей, по fields_num штук на
+ каждого</P>
+ <P class=pack2><U>Описание:</U> Результат поиска контактов. Возвращает
+ анкеты найденных пользователей (их адреса являются полями анкеты). </P>
+ <LI><U>Пакет:</U> <B>Количество писем в почтовом ящике</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_MAILBOX_STATUS</SPAN><BR><U>Тип пакета:</U>
+ sc<BR><U>Параметры:</U></P>
+ <P class=code>UL ## status ## количество непрочитанных писем</P>
+ <P class=pack2><U>Описание:</U> Приходит при получении новой почты или
+ любом другом изменении числа непрочитанных писем в ящике. </P>
+ <LI><U>Пакет:</U> <B>Контакт-лист</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_CONTACT_LIST2</SPAN><BR><U>Тип пакета:</U>
+ sc<BR><U>Параметры:</U></P>
+ <P class=code>UL ## status ## результат запроса контакт-листа</P>
+ <P class=code style="MARGIN-LEFT: 20px">GET_CONTACTS_OK ## поиск
+ выполнен успешно<BR>GET_CONTACTS_ERROR ## найденный контакт-лист
+ некорректен<BR>GET_CONTACTS_INTERR ## произошла внутренняя ошибка</P>
+ <P class=code>UL ## groups_number ## количество групп в
+ контакт-листе<BR>LPS ## group_mask ## маска-описание группы, состоит из
+ символов 's' (LPS),'u' (UL),'z' (строка оканчивающаяся бинарным нулем, в
+ данный момент не используется), сейчас "us" - флаги и название, при
+ расширении описания старые поля сохранят свое расположение<BR>LPS ##
+ contacts_mask ## маска-описание пользователя (синтаксис такой же как и у
+ group_mask), сейчас uussuu (флаги, группа, адрес, ник, серверные флаги,
+ текущий статус в сети)<BR>## groups ## группы (всего groups_number
+ штук)<BR>## contacts ## контакты</P>
+ <P class=pack2><U>Описание:</U> Контакт-лист пользователя хранится на
+ сервере. Клиент может хранить локальную копию контакт-листа, но
+ серверная должна иметь приоритет. Флаги контакта имеют тот же смысл, что
+ в <SPAN class=c>MRIM_CS_ADD_CONTACT</SPAN>, статус - тот же смысл, что в
+ <SPAN class=c>MRIM_CS_USER_STATUS</SPAN>. Серверный флаг в данный момент
+ определён один - <SPAN class=c>CONTACT_INTFLAG_NOT_AUTHORIZED</SPAN>
+ означает, что контакт еще не авторизовал пользователя и находится в
+ группе "Жду авторизации". Если маска контакта или группы содержит больше
+ символов, чем необходимо, клиент должен прочитать значения этих полей и
+ проигнорировать их. </P>
+ <LI><U>Пакет:</U> <B>Авторизация</B>
+ <P class=pack2><U>Имя пакета:</U> <SPAN
+ class=c>MRIM_CS_LOGIN2</SPAN><BR><U>Тип пакета:</U>
+ cs<BR><U>Параметры:</U></P>
+ <P class=code>LPS ## login ## email авторизующегося пользователя<BR>LPS
+ ## password ## пароль<BR>UL ## status ## статус (см.
+ MRIM_CS_CHANGE_STATUS)<BR>LPS ## user_agent ## текстовое описание
+ клиента пользователя, например "Mail.Ru Miranda Plugin v
+ 1.0"</P></LI></UL><IMG height=10 src="Mail.ru Agent.files/0.gif"
+ width=555><BR></TD><!-- END: MainCell --></TR></TBODY></TABLE>
+<TABLE cellSpacing=0 cellPadding=0 width="90%" align=center border=0>
+ <TBODY>
+ <TR>
+ <TD align=middle width="100%">
+ <DIV class=plash>
+ <DIV class=cor><IMG height=1 src="Mail.ru Agent.files/1.gif"
+width=1></DIV>
+ <TABLE class=footer cellSpacing=0 cellPadding=0 width="96%" border=0>
+ <TBODY>
+ <TR>
+ <TD width="27%" height=20>© 1999-2004, <A href="http://www.mail.ru/"
+ target=_blank>Mail.Ru</A></TD>
+ <TD align=middle width="37%"><A
+ href="http://win.mail.ru/cgi-bin/support_mra?version=www"
+ target=_blank>Служба поддержки</A></TD>
+ <TD align=right width="30%" height=20><A
+ href="http://sales.mail.ru/" target=_top>Реклама на Mail.ru</A>
+ <B>·</B> <A href="http://corp.mail.ru/" target=_top>О
+ компании</A></TD></TR></TBODY></TABLE><IMG height=1
+ src="Mail.ru Agent.files/0.gif" width=760><BR>
+ <DIV class=cor><IMG height=1 src="Mail.ru Agent.files/1.gif"
+ width=1></DIV></DIV></TD></TR></TBODY></TABLE><BR
+style="LINE-HEIGHT: 30px"></CENTER><!--//-->
+<SCRIPT>PrxRST();</SCRIPT>
+</BODY></HTML>