# [check IMAPS] cron activation LED (résolu)

## _tebra_

Bonjour,

j'ai trouvé un moyen pour activer une petite LED (représentant un mail) sur mon clavier avec la commande

```
echo 1 > /proc/acpi/acer/mailled
```

J'aimeai que celle-ci s'allume quand un nouveau mail est arrivé sur mon compte IMAPS.

Connaissez vous un petit programme dont cron pourrait se servir pour faire cela.

Merci d'avanceLast edited by _tebra_ on Sun Oct 14, 2007 3:30 pm; edited 1 time in total

----------

## TrizoLakai

Je peux pas te dire comme ça avec cron.

Mais mon plugin mail pour xfce me permet de lancer une commande spécifique sur reception d'un mail. Si tu utilises xfce ce serait tout bon.

----------

## Martin.

```
import imaplib, system

mail = imaplib.IMAP4_SSL('serveur', 993)

mail.login('login', 'pass')

mail.select('Inbox', 1)

tmp , messages = mail.search(None, '(NEW)')

if messages[0] != "":

    os.system('echo 1 > /proc/acpi/acer/mailled')

mail.close()

mail.logout()
```

Je me suis bien amusé  :Smile: 

N'oublie pas de changer l'adresse du serveur, le port (ligne 3), le login et le pass (ligne 4).

J'imagine que tu utilises une connexion par SSL, si c'est pas le cas change le port et IMAP4_SSL em IMAP4.

Tu n'as plus qu'à ajouter un cronjob qui exécute ce petit python  :Smile: 

----------

## Deusexodus

C'est du python ?

J'allais te proposer de le faire en bash ou en C mais ça revient un peu au même (avec une préférence pour le bash pour cette tâche)

@+

----------

## Martin.

 *Martin. wrote:*   

> Tu n'as plus qu'à ajouter un cronjob qui exécute ce petit python 

 

 :Wink: 

Pourquoi bash serait-il plus approprié ?

----------

## CryoGen

 *Martin. wrote:*   

> 
> 
> ```
> import imaplib, system
> 
> ...

 

C'est beau :°) 

Il faudrait peut-etre mettre la led "eteinte" si il n'y a pas ou plus de mail  :Smile: 

----------

## Deusexodus

 *Martin. wrote:*   

>  *Martin. wrote:*   Tu n'as plus qu'à ajouter un cronjob qui exécute ce petit python  
> 
> Pourquoi bash serait-il plus approprié ?

 

Désolé j'avais pas lu la dernière phrase. Pour bash, je l'aurais vu parce qu'il est bien pour les taches simples.

@+

----------

## _tebra_

Un grand merci pour votre aide.

Voici ce que j'obtiens en executant le script (que j'ai nomé mail-notify-LED.py)

```
Traceback (most recent call last):

  File "./mail-notify-LED.py", line 2, in ?

    import imaplib, system

ImportError: No module named system

```

----------

## _tebra_

J'ai trouvé, il faut remplacer "system" par "os" dans la ligne import

Ca fonctionne super

----------

## Martin.

Oulà, en effet.

J'ai pas testé après avoir rajouté os.system().   :Embarassed: 

 *CryoGen wrote:*   

> C'est beau :°) 
> 
> Il faudrait peut-etre mettre la led "eteinte" si il n'y a pas ou plus de mail 

 

Il suffirait de rajouter :

```
else:

    os.system('echo 0 > /proc/acpi/acer/mailled')
```

C'est vrai que c'est pas con  :Very Happy: 

----------

## _tebra_

 *Martin. wrote:*   

> 
> 
> Il suffirait de rajouter :
> 
> ```
> ...

 

C'est ce que j'ai fait et ça fonctionne.

Par contre je me demande comment va se comporter le script si je suis offline. Va-t-il me générer des messages d'erreure?

----------

## Martin.

Certainement, je te corrige ca de suite.

```
#!/usr/bin/python

import imaplib, os, socket, sys

try:

    mail = imaplib.IMAP4_SSL('serveur', 993)

except socket.gaierror:

    sys.exit()

mail.login('login', 'pass')

mail.select('Inbox', 1)

tmp , messages = mail.search(None, '(NEW)')

if messages[0] != "":

    os.system('beep -f 3000')

mail.close()

mail.logout()
```

Voilà  :Wink: 

----------

## Delvin

Ce genre de truc est pas géré par l'acpi normalement ?

thunderbird me le fait tout seul sur mon portable (où en plus l'acpi est mal géré ...)

----------

## _tebra_

Voici ce que me donne le script lorsque je l'exécute en mode offline

```
Traceback (most recent call last):

  File "/usr/bin/mail-notify-LED.py", line 5, in ?

    mail = imaplib.IMAP4_SSL('xxx', 993)

  File "/usr/lib64/python2.4/imaplib.py", line 1101, in __init__

    IMAP4.__init__(self, host, port)

  File "/usr/lib64/python2.4/imaplib.py", line 160, in __init__

    self.open(host, port)

  File "/usr/lib64/python2.4/imaplib.py", line 1113, in open

    self.sock.connect((host, port))

  File "<string>", line 1, in connect

socket.error: (101, 'Network is unreachable')

```

Y a un problème?

Le script au compet:

```
#!/usr/bin/python

import imaplib, os, socket, sys

try:

    mail = imaplib.IMAP4_SSL('xxx', 993)

except socket.gaierror:

    sys.exit()

mail.login('login', 'passwd')

mail.select('Inbox', 1)

tmp , messages = mail.search(None, '(NEW)')

if messages[0] != "":

    os.system('echo 1 > /proc/acpi/acer/mailled')

else:

    os.system('echo 0 > /proc/acpi/acer/mailled')

mail.close()

mail.logout()

```

----------

## Martin.

 *_tebra_ wrote:*   

> Voici ce que me donne le script lorsque je l'exécute en mode offline
> 
> ```
> Traceback (most recent call last):
> 
> ...

 

Oh. Moi j'ai testé sur une fausse adresse  :Smile: 

Voici la correction :

```
#!/usr/bin/python

import imaplib, os, socket, sys

try:

    mail = imaplib.IMAP4_SSL('xxx', 993)

except socket.error:

    sys.exit()

mail.login('login', 'passwd')

mail.select('Inbox', 1)

tmp , messages = mail.search(None, '(NEW)')

if messages[0] != "":

    os.system('echo 1 > /proc/acpi/acer/mailled')

else:

    os.system('echo 0 > /proc/acpi/acer/mailled')

mail.close()

mail.logout()

```

----------

