читалка заголовков писем на googlemail


masterx - Posted on 11 Август 2008

Читалка заголовков мэйлов с googlemail:

#!/bin/sh
 
URL='https://mail.google.com/mail/feed/atom'
 
curl --silent -u name@googlemail.com:passwd $URL | \
	grep -v Gmail | \
while read line
do 
	echo $line | grep "<title>" 1>/dev/null \
		&& TITLE=`echo $line | sed -e 's/<title>//' -e 's/<\/title>//'`;\
	echo $line | grep "<name>" 1>/dev/null	\
		&& NAME=`echo $line | sed -e 's/<name>//' -e 's/<\/name>//'`;\
	echo $line | grep "<email>"  1>/dev/null \
		&& EMAIL=`echo $line | sed -e 's/<email>//' -e 's/<\/email>//'` && \
	echo $(echo $NAME "<"$EMAIL">" $TITLE)
done



P.S. Лучшего применения чем прикрутить эту штуку на dzen не нашел :-)

5
Ваша оценка: Ничего Рейтинг: 5 (2 голоса)

А еще спасибо за упоминание dzen (до этого не сталкивался с ним). Очень удобная штука =))



Повесил в cron на каждые 15 мин и радуюсь теперь =)))

(echo Gmail ; /bin/gmail.sh) | dzen2 -l 8 -p -bg red -fg white

Мля... Написал...



Через некоторое время заметил, что не пашет... Проверил в /var/log/syslog там есть отметки о запуске, но почему-то dzen не появляется...

А хочется чтобы если почта есть появлялся dzen





Подскажи как это сделать, плиз. (чтобы например раз в 15 минут проверялась почта и если она есть то запускался dzen. я именно с cron'ом не могу разобраться :((( )

С кроном, уже ооочень давно ничего не делал. И подозреваю , что крон в Убунту может иметь собственную семантику. Может обойтись без крона? Для эксперементов, кострукция должна быть примерно такая:

(while true; do checkmail ; echo "New Mails: " $N; \
	readfeeds ; sleep 900; done)\
        | dzen2  -p -x $WHEREX  -w $WIDTH -fg $FG -bg $BG -fn $FONT -l 20 -u \
        -e 'button3=exit;button1=togglecollapse;button4=collapse;button5=uncollapse'

N - сюда записывает количество мэйлов в ящике

WHEREX - координата появления dzen по оси Х на экране

WIDTH - ширина

FG - передний цвет (FG='green')

BG - задний цвет (BG='black')

3я кнопка мышки - уберет dzen

колёсико - свернуть развернуть

Позже выложу свой скрипт для почты на dzen.

Это я тоже сообразил сделать =))) Такой скрипт можно в автозагрузку кинуть и все дела =))) Но хотелось по нормальному в кроне сделать =) в Ubuntu - anacron

А у меня не пашет... :((
В имени есть точка, а в пароле такие знаки как & и \. Пробовал предварять их \, а также брать всю строку после -u в "" и ''. Все равно не помогает. :(

Curl возвращает вот это:

<HTML>
<HEAD>
<TITLE>Unauthorized</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1>
<H2>Error 401</H2>
</BODY>
</HTML>

Т.ж. пробовал использовать не "googlemail", а "gmail"... Но все безрезультатно :(((
Где может быть загвоздка?

Попробуйте urlencode-ить эти символы.

// darkk

ЗЫ: система Ubuntu 8.04

Возьми тогда в одинарные ковычки: ' '. Напиши получилось ли. Доведу тогда скртптик до ума.

В первом посте я же писал: Пробовал предварять их \, а также брать всю строку после -u в "" и ''.
Т.е. предварял \ (обратным слешем), и "" (двойными кавычками), и '' (одинарными)...

Для инфы:
$ curl --version
curl 7.18.0 (i486-pc-linux-gnu) libcurl/7.18.0 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.1
Protocols: tftp ftp telnet dict ldap ldaps http file https ftps
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz

Ок , попробуем тогда локализировать проблемку.
Зайди в броузере (firefox) по ссылке https://mail.google.com/mail/feed/atom

По идее должно будет появиться приглашение ввести свой логин и пароль. Вводишь, если все работает, тогда в твоем случае имеет место действительно неверная передача пароля из-за символов $ и /.
Если приглашение не появится, то проблема имеет место до передачи пароля.

На всякий случай, попробуй отдельно пароль взять в одинарные кавычки ' ' и стартани curl c опцией -v, и вместо --silent попробуй -S. Это выведет в терминал более подробные сообщения.

И еще только что заметил: первая строчка #!/bin/sh

Напиши о результатах

Вчера, когда с мобилы проверял почту, все понял. Дело в том, что я несколько раз подряд ввел не верный пароль (подзабыл его) и теперь у меня капча вываливается... Т.е. пока не введу пароль и код с капчи меня гмайл не пустит. В этом-то и проблема. А опции -v и вместо --silent - -S уже пробовал еще вчера, но там ничего не нашел подозрительного. #!/bin/sh и т.п. мне не нужно, я не как скрит это дело оформлял, а как функцию в ~/.bashrc.

Щас попробовал "прокурлить", вернул то, что надо. Капча отошла от дела и все ок.

А строку после -u (я заменил ее на --user, удобнее так ;)) экраниловал '' (одинарными кавычками).



Функцией получил такой код:

function gmail()
{
	URL='https://mail.google.com/mail/feed/atom'
 
	curl --silent --user 'name@googlemail.com:passwd' $URL | grep -v Gmail | 	while read line
	do 
		echo $line | grep "<title>" 1>/dev/null && TITLE=`echo $line | sed -e 's/<title>//' -e 's/<\/title>//'`
		echo $line | grep "<name>" 1>/dev/null && NAME=`echo $line | sed -e 's/<name>//' -e 's/<\/name>//'`
		echo $line | grep "<email>"  1>/dev/null && EMAIL=`echo $line | sed -e 's/<email>//' -e 's/<\/email>//'` && echo $(echo $NAME "<"$EMAIL">" $TITLE)
	done
}

т.е. никакой принципиальной разницы =))

Прогрнал эту функцию, получил список новых писем =)))



ЗЫ: Я даже не знал, что гугля будет капчу выдавать при вводе пароля :( сорри.

ЗЫЫ: Спасибо за помощь и за опубликованный код =)))))))))))))))))))))))

ЗЫЫЫ: Странновато работает пмайл в этом плане: если отметить письмо как не прочитанное и на него уже был ответ, то он в атом выкидывает и это письмо (которым отвечали)

Отправить комментарий

Google Friend Connect (leave a quick comment)
loading...
Содержание этого поля является приватным и не предназначено к показу.