|
|
|
@ -1,83 +1,182 @@
|
|
|
|
# Mail Checker
|
|
|
|
# Mail Checker
|
|
|
|
|
|
|
|
|
|
|
|
**Mail Checker** je napredna i potpuno funkcionalna Python aplikacija koja radi unutar sistemske trake (System Tray) i služi za praćenje nepročitanih poruka s više IMAP računa istovremeno. Aplikacija podržava zvučne obavijesti, glasovna upozorenja na hrvatskom jeziku (TTS), pregled i čitanje zadnjih poruka kroz tabove, te sigurno pohranjivanje lozinki.
|
|
|
|
**Mail Checker** je napredna i potpuno funkcionalna Python aplikacija koja radi unutar sistemske trake (*System Tray*) i služi za praćenje nepročitanih poruka s više IMAP računa istovremeno.
|
|
|
|
|
|
|
|
|
|
|
|
> **Napomena o kompatibilnosti**: Ova aplikacija je razvijena isključivo za **Linux** sustave, a službeno je testirana i optimizirana na **Debian 13 (Trixie)** operativnom sustavu.
|
|
|
|
Aplikacija podržava:
|
|
|
|
|
|
|
|
- zvučne obavijesti
|
|
|
|
|
|
|
|
- glasovna upozorenja na hrvatskom jeziku (TTS)
|
|
|
|
|
|
|
|
- pregled i čitanje zadnjih poruka kroz tabove
|
|
|
|
|
|
|
|
- sigurno pohranjivanje lozinki
|
|
|
|
|
|
|
|
|
|
|
|
## ✨ Funkcionalnosti
|
|
|
|
> **Napomena o kompatibilnosti:**
|
|
|
|
|
|
|
|
> Ova aplikacija razvijena je isključivo za **Linux** sustave te je službeno testirana i optimizirana na **Debian 13 (Trixie)** operativnom sustavu.
|
|
|
|
|
|
|
|
|
|
|
|
- **Praćenje više računa**: Sinkronizirana provjera više e-mail računa s različitim IMAP poslužiteljima.
|
|
|
|
---
|
|
|
|
- **Fleksibilni intervali**: Svaki račun može imati vlastiti interval provjere (minimalno 10 sekundi).
|
|
|
|
|
|
|
|
- **Napredne obavijesti**:
|
|
|
|
|
|
|
|
- Desktop notifikacije preko sistemskog daemon-a (`notify-send`).
|
|
|
|
|
|
|
|
- Prilagođene zvučne datoteke (`.wav`, `.mp3`) za svaki račun zasebno.
|
|
|
|
|
|
|
|
- **Glasovni alert (TTS)**: Izgovaranje broja nepročitanih poruka na hrvatskom jeziku uz ispravnu gramatičku deklinaciju (npr. *1 poruku*, *2 poruke*, *5 poruka*) s izborom muškog ili ženskog glasa.
|
|
|
|
|
|
|
|
- **Pregled poruka**: Sučelje s tabovima unutar kojeg možete pročitati tekstualni sadržaj zadnjih poruka ili ih trajno obrisati (prebaciti u *Trash*).
|
|
|
|
|
|
|
|
- **Visoka sigurnost**: Integracija sa sistemskim privjeskom ključeva (`keyring`) – lozinke se ne zapisuju u plain-text obliku unutar konfiguracijske datoteke ako je privjesak dostupan.
|
|
|
|
|
|
|
|
- **Otpornost na mrežne greške**: Implementiran *exponential backoff* mehanizam za ponovne pokušaje u slučaju gubitka mrežne veze.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 🛠️ Potpuni zahtjevi i instalacija (Debian 13)
|
|
|
|
# ✨ Funkcionalnosti
|
|
|
|
|
|
|
|
|
|
|
|
Kako bi aplikacija radila bez ikakvih pogrešaka i upozorenja u terminalu, potrebno je instalirati sve sistemske biblioteke i Python pakete.
|
|
|
|
- **Praćenje više računa**
|
|
|
|
|
|
|
|
Sinkronizirana provjera više e-mail računa s različitim IMAP poslužiteljima.
|
|
|
|
|
|
|
|
|
|
|
|
### 1.">Instalacija sistemskih paketa (APT)
|
|
|
|
- **Fleksibilni intervali**
|
|
|
|
|
|
|
|
Svaki račun može imati vlastiti interval provjere (minimalno 10 sekundi).
|
|
|
|
|
|
|
|
|
|
|
|
Otvorite terminal i pokrenite sljedeću naredbu kako biste instalirali **sve** potrebne pakete za grafiku, zvuk, obavijesti i privjesak ključeva:
|
|
|
|
- **Napredne obavijesti**
|
|
|
|
|
|
|
|
- Desktop notifikacije preko sistemskog daemon-a (`notify-send`)
|
|
|
|
|
|
|
|
- Prilagođene zvučne datoteke (`.wav`, `.mp3`) za svaki račun zasebno
|
|
|
|
|
|
|
|
- **Glasovni alert (TTS)**:
|
|
|
|
|
|
|
|
Izgovaranje broja nepročitanih poruka na hrvatskom jeziku uz ispravnu gramatičku deklinaciju:
|
|
|
|
|
|
|
|
- `1 poruku`
|
|
|
|
|
|
|
|
- `2 poruke`
|
|
|
|
|
|
|
|
- `5 poruka`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Podržan je izbor muškog ili ženskog glasa.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- **Pregled poruka**
|
|
|
|
|
|
|
|
Sučelje s tabovima unutar kojeg možete pročitati tekstualni sadržaj zadnjih poruka ili ih trajno obrisati (prebaciti u *Trash*).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- **Visoka sigurnost**
|
|
|
|
|
|
|
|
Integracija sa sistemskim privjeskom ključeva (`keyring`) – lozinke se ne zapisuju u plain-text obliku unutar konfiguracijske datoteke ako je privjesak dostupan.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- **Otpornost na mrežne greške**
|
|
|
|
|
|
|
|
Implementiran je *exponential backoff* mehanizam za ponovne pokušaje u slučaju gubitka mrežne veze.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 🛠️ Potpuni zahtjevi i instalacija (Debian 13)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kako bi aplikacija radila bez pogrešaka i upozorenja u terminalu, potrebno je instalirati sve sistemske biblioteke i Python pakete.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 1. Instalacija sistemskih paketa (APT)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Otvorite terminal i pokrenite sljedeću naredbu:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
```bash
|
|
|
|
sudo apt update
|
|
|
|
sudo apt update
|
|
|
|
|
|
|
|
|
|
|
|
sudo apt install python3-tk python3-pil python3-pystray python3-keyring \
|
|
|
|
sudo apt install python3-tk python3-pil python3-pystray python3-keyring \
|
|
|
|
espeak-ng mpv libayatana-appindicator3-1 libayatana-appindicator-glib1 \
|
|
|
|
espeak-ng mpv \
|
|
|
|
libnotify-bin gir1.2-gtop-2.0 dbus-x11
|
|
|
|
libayatana-appindicator3-1 \
|
|
|
|
|
|
|
|
libayatana-appindicator-glib1 \
|
|
|
|
**Pojašnjenje paketa:**
|
|
|
|
libnotify-bin \
|
|
|
|
- `python3-tk`: Omogućuje rad Tkinter grafičkog sučelja u Pythonu.
|
|
|
|
gir1.2-gtop-2.0 \
|
|
|
|
- `python3-pil`: Pillow biblioteka za generiranje i manipulaciju ikona u sistemskoj traci.
|
|
|
|
dbus-x11
|
|
|
|
- `python3-pystray`: Omogućuje kreiranje i upravljanje ikonom u sistemskoj traci.
|
|
|
|
```
|
|
|
|
- `python3-keyring`: Omogućuje Pythonu komunikaciju sa sustavnim privjeskom ključeva za sigurno spremanje lozinki.
|
|
|
|
|
|
|
|
- `espeak-ng`: TTS pokretač koji generira glasovne obavijesti na hrvatskom jeziku.
|
|
|
|
### Pojašnjenje paketa
|
|
|
|
- `mpv`: Moćan media player koji aplikacija koristi u pozadini za reprodukciju `.mp3` i `.wav` dateka bez blokiranja sučelja.
|
|
|
|
|
|
|
|
- `libayatana-appindicator3-1` & `libayatana-appindicator-glib1`: Sustavne biblioteke ključne za ispravan prikaz ikone u traci (AppIndicator) na modernim Linux radnim okruženjima.
|
|
|
|
- `python3-tk`
|
|
|
|
- `libnotify-bin`: Omogućuje slanje skočnih desktop obavijesti putem naredbe `notify-send`.
|
|
|
|
Omogućuje rad Tkinter grafičkog sučelja u Pythonu.
|
|
|
|
- `dbus-x11`: Osigurava stabilnu komunikaciju aplikacije sa sistemskim servisima (notifikacije, keyring) unutar X11/Wayland sesije.
|
|
|
|
|
|
|
|
|
|
|
|
- `python3-pil`
|
|
|
|
### 4. Pokretanje aplikacije
|
|
|
|
Pillow biblioteka za generiranje i manipulaciju ikona u sistemskoj traci.
|
|
|
|
```markdown
|
|
|
|
|
|
|
|
## 🚀 Pokretanje aplikacije
|
|
|
|
- `python3-pystray`
|
|
|
|
|
|
|
|
Omogućuje kreiranje i upravljanje ikonom u sistemskoj traci.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- `python3-keyring`
|
|
|
|
|
|
|
|
Omogućuje Pythonu komunikaciju sa sustavnim privjeskom ključeva za sigurno spremanje lozinki.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- `espeak-ng`
|
|
|
|
|
|
|
|
TTS pokretač koji generira glasovne obavijesti na hrvatskom jeziku.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- `mpv`
|
|
|
|
|
|
|
|
Media player koji aplikacija koristi za reprodukciju `.mp3` i `.wav` datoteka bez blokiranja sučelja.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- `libayatana-appindicator3-1`
|
|
|
|
|
|
|
|
- `libayatana-appindicator-glib1`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Sustavne biblioteke ključne za ispravan prikaz ikone u sistemskoj traci (*AppIndicator*).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- `libnotify-bin`
|
|
|
|
|
|
|
|
Omogućuje slanje desktop obavijesti putem naredbe `notify-send`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- `dbus-x11`
|
|
|
|
|
|
|
|
Osigurava stabilnu komunikaciju aplikacije sa sistemskim servisima.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 🚀 Pokretanje aplikacije
|
|
|
|
|
|
|
|
|
|
|
|
Aplikaciju pokrećete iz njezinog direktorija standardnom naredbom:
|
|
|
|
Aplikaciju pokrećete iz njezinog direktorija standardnom naredbom:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
```bash
|
|
|
|
python3 mail_checker.py
|
|
|
|
python3 mail_checker.py
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 5. Korisničko sučelje (Postavke i Pregled)
|
|
|
|
# ⚙️ Korisničko sučelje (Postavke i pregled)
|
|
|
|
```markdown
|
|
|
|
|
|
|
|
## ⚙️ Korisničko sučelje (Postavke i Pregled)
|
|
|
|
## Upravljanje računima
|
|
|
|
|
|
|
|
|
|
|
|
### Upravljanje računima
|
|
|
|
|
|
|
|
Prozor za postavke podijeljen je na dva dijela:
|
|
|
|
Prozor za postavke podijeljen je na dva dijela:
|
|
|
|
1. **Lijeva strana**: Popis registriranih računa s horizontalnim klizačem za dugačke adrese te gumbima ▲/▼ za promjenu redoslijeda provjere.
|
|
|
|
|
|
|
|
2. **Desna strana**: Formular za unos detalja računa (Nadimak, IMAP Server, Email, Lozinka, Interval, Zvučna datoteka, TTS postavke i opcije pregleda).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Pregled poruka
|
|
|
|
### Lijeva strana
|
|
|
|
Klikom na **Pregled poruka** unutar izbornika sistemske trake otvara se prozor koji povlači najnovije poruke za sve račune koji imaju uključenu opciju prikaza. Dvostrukim klikom na poruku otvara se prozor za čitanje tekstualnog sadržaja s opcijom izravnog brisanja poruke sa servera.
|
|
|
|
- Popis registriranih računa
|
|
|
|
|
|
|
|
- Horizontalni klizač za dugačke adrese
|
|
|
|
|
|
|
|
- Gumbi `▲` / `▼` za promjenu redoslijeda provjere
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Desna strana
|
|
|
|
|
|
|
|
Formular za unos detalja računa:
|
|
|
|
|
|
|
|
- Nadimak
|
|
|
|
|
|
|
|
- IMAP server
|
|
|
|
|
|
|
|
- Email
|
|
|
|
|
|
|
|
- Lozinka
|
|
|
|
|
|
|
|
- Interval provjere
|
|
|
|
|
|
|
|
- Zvučna datoteka
|
|
|
|
|
|
|
|
- TTS postavke
|
|
|
|
|
|
|
|
- Opcije pregleda
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Pregled poruka
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Klikom na **Pregled poruka** unutar izbornika sistemske trake otvara se prozor koji dohvaća najnovije poruke za sve račune koji imaju uključenu opciju prikaza.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dvostrukim klikom na poruku otvara se prozor za čitanje tekstualnog sadržaja s opcijom izravnog brisanja poruke sa servera.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 📁 Struktura datoteka
|
|
|
|
# 📁 Struktura datoteka
|
|
|
|
|
|
|
|
|
|
|
|
Aplikacija unutar svog direktorija koristi i stvara sljedeće datoteke:
|
|
|
|
Aplikacija koristi i stvara sljedeće datoteke:
|
|
|
|
- `mail_checker.py` - Glavni izvorni kôd aplikacije.
|
|
|
|
|
|
|
|
- `config.json` - Konfiguracijska datoteka u kojoj se čuvaju postavke računa (lozinke su izostavljene ako se koristi `keyring`).
|
|
|
|
|
|
|
|
- `mail_checker.log` - Detaljan dnevnik rada i pogrešaka (Log file).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 🔒 Sigurnost lozinki (Keyring Helper)
|
|
|
|
- `mail_checker.py`
|
|
|
|
|
|
|
|
Glavni izvorni kod aplikacije.
|
|
|
|
|
|
|
|
|
|
|
|
Aplikacija automatski prepoznaje podržava li vaše radno okruženje na Debianu privjesak ključeva (npr. *GNOME Keyring* ili *KDE Wallet*).
|
|
|
|
- `config.json`
|
|
|
|
- **Ako je privjesak dostupan**: Polje `"MAIL_PASSWORD"` unutar `config.json` ostat će prazno (`""`), a lozinka se sigurno pohranjuje u sustav pod servisom `MailChecker`.
|
|
|
|
Konfiguracijska datoteka u kojoj se čuvaju postavke računa.
|
|
|
|
- **Ako privjesak nije dostupan** (npr. minimalne ili headless instalacije): Aplikacija će zapisati upozorenje u log te će automatski spremiti lozinku lokalno unutar datoteke `config.json` kako bi osigurala kontinuitet rada.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 🐛 Rješavanje problema i Dnevnik (Logging)
|
|
|
|
- `mail_checker.log`
|
|
|
|
|
|
|
|
Detaljan dnevnik rada i pogrešaka (*log file*).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 🔒 Sigurnost lozinki (Keyring Helper)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Aplikacija automatski prepoznaje podržava li vaše radno okruženje privjesak ključeva (*GNOME Keyring* ili *KDE Wallet*).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- **Ako je privjesak dostupan**
|
|
|
|
|
|
|
|
- Polje `"MAIL_PASSWORD"` unutar `config.json` ostat će prazno (`""`)
|
|
|
|
|
|
|
|
- Lozinka će biti sigurno pohranjena pod servisom `MailChecker`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- **Ako privjesak nije dostupan**
|
|
|
|
|
|
|
|
- Aplikacija zapisuje upozorenje u log
|
|
|
|
|
|
|
|
- Lozinka se sprema lokalno u `config.json` kako bi aplikacija mogla nastaviti raditi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 🐛 Rješavanje problema i dnevnik rada (Logging)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Sve akcije, promjene stanja, uspješni dohvat poruka te IMAP ili mrežne pogreške zapisuju se u datoteku:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
|
|
mail_checker.log
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Sve akcije, promjene stanja, uspješni dohvati, kao i IMAP ili mrežne pogreške konstantno se zapisuju u datoteku `mail_checker.log`. U slučaju bilo kakvih problema s povezivanjem na e-mail poslužitelj, otvorite log datoteku kako biste vidjeli točan uzrok:
|
|
|
|
Praćenje loga u stvarnom vremenu:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
```bash
|
|
|
|
tail -f mail_checker.log
|
|
|
|
tail -f mail_checker.log
|
|
|
|
|
|
|
|
```
|
|
|
|
|