Дарова, перец!
Итак, ты целое лето просидел в IRC и не научился ничему путному... Но ты помнишь и надеешься на xakep.ru - там тебя всегда научат 🙂
Вспомни ситуевину: сидишь ты в IRC и ждешь мыла от кого-нибудь.. Но не знаешь, пришло оно или нет? Знакомая ситуация? Дык вот, чтобы не дергаться и не запускать какой-нибудь там The Bat или упаси боже MS Outlook 😉 ты реально можешь коннектиться к mail-серваку твоим любимым mIRC`ом, благо создатели это предусмотрели, за что им хвала, почет и бочка пива %)
В основу скрипта берется работа с сокетами. Главные функции - /sockread и /sockwrite - будут получать и отправлять инфу с сервера и на сервер соответственно 🙂 Больно я тебя загрузил, без бутылки не обойтись - ответишь ты, поэтому перехожу прямо к делу.
Для того чтобы задать сведения для скрипта (логин, пароль, сервер и порт) тебе нужно кинуть этот кусок в PopUp. Для этого нажимай Alt+P в мирке, выбери в верхнем меню View->Status и вписать туда:
MAIL
.CHECK :/S_MAIL
.SERVER :/set %server $$?="Server"
.PORT :/set %port $$?="Port"
.USER:/set %user $$?="User"
.PASS:/set %pass $$?*="Pass"
И затем переключиться в Status, щелкнуть правой кнопой крысы, пройтись по всем пунктам в закладке MAIL, кроме CHECK (он у нас еще не готов) и установить все переменные, а именно: сервер, порт, почтовый логин и пароль 🙂
После этого идем в Aliases (Alt+A) и вписываем туда (в любое место)
/S_MAIL {
set %i 0
set %var 0
/window -a @MAIL
/sockopen mail %server %port
}
/E_MAIL {
/echo @MAIL
/echo @MAIL Thank for using mailchecker! Please, close this window! 4
/sockclose mail | halt
}
S_MAIL - старт проверки мыла. Обнуляет важные переменные, открывает новое окошко MAIL, в которое тебе будет идти лабуда о твоих новых сообщениях или о том, что таковых не имеется %), и, пожалуй, самое главное - открывает сокет mail на сервер и порт, который ты указал раньше.
E_MAIL - концовка mailcheck скрипта: вывод рекламной лабуды =) и закрытие сокета.
И пожалуй самое важное - скрипт обмена данных между сервером и мирком 🙂 Это осуществит обработчик on sockread. Для этого переключимся в Remote (Alt+R) и впишем туда следующий скрипт:
on 1:sockread:mail:{
if ($sockerr > 0) return
:parse
sockread -n %var
if ($sockbr == 0) return
if (%var == $null) %var = -
if (%i == 0) {
if ($left(%var,4) == -ERR) { echo @MAIL ! Error ! : Server not READY! | e_mail }
sockwrite -n mail user %user
inc %i
/echo @MAIL Connect ok, sending username %user | goto parse
}
if (%i == 1) {
if ($left(%var,4) == -ERR) { echo @MAIL ! Error ! : Unknown or locked
username! | e_mail }
sockwrite -n mail pass %pass
inc %i
/echo @MAIL Sending password .. | goto parse
}
if (%i == 2) {
if ($left(%var,4) == -ERR) { echo @MAIL ! Error ! : Password Incorrect or Locked
mailbox! | e_mail }
sockwrite -n mail list
inc %i
/echo @MAIL Logged in... Get messages... | goto parse
}
if (%i == 3) {
/echo @MAIL ----------------------
/echo @MAIL Status for %user $+ :
/echo @MAIL ----------------------
e_mail
}
}
В данном скрипте все просто, и нет ничего лишнего. Скрипт посылает логин, пароль и запрос на количество сообщений. И фильтрует их на приеме: проверка на готовность почтового сервера, правильности логина и пароля и в любом случае корректно завершает работу с сервером.
Настало время проверить работу скрипта %) Выбирай в статусе Mail->Check и возрадуйся появлению нового окошка, в котором тебе придет инфа о новых мессагах.. или не придет %) В любом случае, после завершения работы скрипта закрой окошко 🙂
И напоследок: чтобы не тянуться в статус в PopUp менюшку для проверки мыла, выполни команду: /alias F2 /s_mail - это позволит тебе проверять почту, всего лишь нажав кнопку F2