Здравствуйте. Я переделал скрипт для mail.ru. Работающий скрипт имеет вид:

function initHandler(handler){

handler.name="mailru";
handler.dataURL="http://win.mail.ru/cgi-bin/auth";
handler.loginData=["http://win.mail.ru/cgi-bin/auth",
"Login","Password","Domain="+encodeURIComponent("mail.ru")];
handler.mailURL="http://win.mail.ru/cgi-bin/auth";

handler.getData=function(aData){ //aData is a html source in dataURL
var fnd=aData.match(/\u043c:&nbsp;<b>(\d+?)<\/b>/); //find mail count
if(fnd){
var num = fnd[1]; //get mail count here
return num;
}else{
return -1;//display 'not checked' message
}
};
}

Но для Яндекса по такой же аналогии скрипт не проверяет количество писем на почтовом ящике:

function initHandler(handler){

handler.name="yandexru";
handler.dataURL="http://mail.yandex.ru/cgi-bin/auth";
handler.loginData=["http://mail.yandex.ru/cgi-bin/auth",
"Login","Password","Domain="+encodeURIComponent("yandex.ru")];
handler.mailURL="http://mail.yandex.ru/cgi-bin/auth";

handler.getData=function(aData){ //aData is a html source in dataURL
var fnd=aData.match(/\u043c:&nbsp;<b>(\d+?)<\/b>/); //find mail count
if(fnd){
var num = fnd[1]; //get mail count here
return num;
}else{
return -1;//display 'not checked' message
}
};
}

Подскажите пожалуйста, что я сделал не так? :-)

кто вам сказал, что при простом изменении домена этот скрипт будет работать? он выдирает количество новых сообщений прямо со страницы почты, к тому же, система авторизации на яндексе устроена совсем иначе.

Неработающий скрипт как бы и так предполагает, что простое изменение домена не помогло. Это даже мне, ни разу не скриптостроителю, ясно.
Спасибо за дельный совет :)

Буду прям: как поправить скрипт для майла, чтобы он работал под яндексом?
Заранее спасибо.

Вроде как этот вариант более правильный, а всё равно нет уведомлений о приходе писем:

function initHandler(handler){

handler.name="yandexru";
handler.dataURL="http://passport.yandex.ru/passport?mode=auth&retpath=http://mail.yandex.ru";
handler.loginData=["http://passport.yandex.ru/passport?mode=auth&retpath=http://mail.yandex.ru",
"Login","Password","Domain="+encodeURIComponent("yandex.ru")];
handler.mailURL="http://passport.yandex.ru/passport?mode=auth&retpath=http://mail.yandex.ru";

handler.getData=function(aData){ //aData is a html source in dataURL
var fnd=aData.match(/\u043c:&nbsp;<b>(\d+?)<\/b>/); //find mail count
if(fnd){
var num = fnd[1]; //get mail count here
return num;
}else{
return -1;//display 'not checked' message
}
};
}

При нахождении в папке Входящие (а логин автоматом туда приводит) эту информацию можно взять из заголовка таба и окна ;)

Никто не спорит :-) Но как всё-таки должен выглядеть скрипт? Неужели никто не переписывал его под Яндекс?

Находит непрочитанные сообщения по шабону, типа "(<b>2323</b>)".
Не стал проверять что будет если новых сообщений нет.
Что бы однозначно определить количество непрочитанных надо искать русскую фразу. С русской кодировкой возиться не стал, оставил простой шаблон по тегам.
На сегодняшний день работает и ладно.

Выделить код

Код:

function initHandler(handler) {


  handler.name =   'yandex';
  handler.dataURL =       'http://mail.ya.ru/';
  handler.mailURL =       'http://mail.ya.ru/';
  handler.loginData =     ['https://passport.yandex.ru/passport?mode=auth', 'login', 'passwd', 'retpath=http://mail.yandex.ru/'];


  handler.getData = function(aData) {  

    try
    {
        var str = aData.match(/">\(<b>\d+<\/b>\)/);

        
        if(str)
        {

            return String(str).match(/\d+/);
        }
        return 0;
    }
    catch(err)
    {
        return 1000;  
    }
    
    return 2000;

  };
}

Не проще ли делать такие вещи опрашивая непосредственно POP3 сервер?

Заработало! Спасибо,dishlo ;)

Вопрос про скрипт от mailru
Почему-то с ним выдаётся "mailru: not checked"
Что в нём надо поправить для стандартного "No new mail"?

А вот этого я не знаю. При получении почты, всегда появляется уведомление. Большего мне от этого плагина и не надо :)

А у меня для yandex'a, почему-то не работает. Нет уведомления о новой почте.
Может кто подскажет в чем проблема...

Сделал скрипт для яндекса. Вроде работает:)
Не знаю как заmatch'ить русские символы, повозился - не получилось.

Выделить код

Код:

/***********************************************************
yandex
  2009-12-06
***********************************************************/
function initHandler(handler) {
  handler.name = "Yandex";
  handler.dataURL = "http://mail.yandex.ru/";
  handler.loginData = ["https://passport.yandex.ru/passport", "login", "passwd", "mode=auth&retpath=http://mail.yandex.ru"];
  handler.mailURL = "http://mail.yandex.ru/";

  handler.getData = function(aData) {
    //Не знаю как match'ем ловить русские символы и пробелы, поэтому вместо них .* и \s соотвественно.
    //Есть нечитанная почта.
    //<title>Входящие (1 / 127) — Яндекс.Почта</title>
    var fnd = aData.match(/<title>.*\s\((\d+)\s\/\s\d+\)\s.*<\/title>/);
    if (fnd)
      return fnd[1];

    //Нечитанной почты нету.
    //<title>Входящие (127) — Яндекс.Почта</title>
    fnd = aData.match(/<title>.*\s\((\d+)\)\s.*<\/title>/);
    if (fnd)
      return 0;

    return -1;
  }
}

Вышла новая версия Webmail Notifier - старый скрипт не работает.
Таки разобрался с русскими буквами:)

Выделить код

Код:

/***********************************************************
yandex
  2010-01-01
***********************************************************/

var name="Yandex";

function init() {
    this.dataURL = "http://mail.yandex.ru/";
    this.loginData = ["https://passport.yandex.ru/passport", "login", "passwd", "mode=auth&retpath=http://mail.yandex.ru"];
    this.mailURL = "http://mail.yandex.ru/";
}

function getCount(aData) {
    //Есть нечитанная почта.
    //<title>Входящие (1 / 127) — Яндекс.Почта</title>
    //                             В     х     о     д     я     щ     и     е       (  1     /   127)
    var fnd = aData.match(/<title>\u0412\u0445\u043E\u0434\u044F\u0449\u0438\u0435\s\((\d+)\s\/\s\d+\)\s.*<\/title>/);
    if (fnd)
        return fnd[1];

    //Нечитанной почты нету.
    //<title>Входящие (127) — Яндекс.Почта</title>
    fnd = aData.match(/<title>\u0412\u0445\u043E\u0434\u044F\u0449\u0438\u0435\s\((\d+)\)\s.*<\/title>/);
    if (fnd)
        return 0;

    return -1;
}