Salutare, Am finalizat aplicația „Mail Extractor”. Mai jos găsești toate informațiile necesare pentru testare și o descriere detaliată a funcționalităților implementate. --------------------------------------------------------- STRUCTURA PROIECTULUI Directorul principal: “mailextractor” (în public_html) --------------------------------------------------------- Fișiere din directorul rădăcină: • config.php – Setările de conexiune la baza de date și conturile de email. • db.php – Scriptul de conectare la baza de date (folosește PDO). • init_db.php – Scriptul care creează tabelele necesare: - emails (stochează emailuri extrase cu câmpuri: email, cc, subject, body, attachments, date_added, source) - email_history (pentru logurile acțiunilor – inserări, duplicate) - accounts (conține conturile de email folosite pentru extragere; contul implicit are is_default = 1) - admin (pentru credențialele de administrare; contul implicit: user = “admin”, parola = “@TuBimax1@.”) • email_extractor.php – Modulul care se conectează la serverul IMAP, extrage emailurile (expeditor, CC, subiect, corp curat – cu eliminarea liniilor de tip “Content-Type”), salvează atașamentele în folderul “attachments/” și înregistrează datele în baza de date. • cron.php – Scriptul ce permite actualizarea automată prin cron job. Directorul “admin” – Panoul de administrare: • login.php, process_login.php, logout.php – Sistemul de autentificare. • header.php, footer.php – Layout-ul comun (header include meniul cu logo clicabil, linkuri pentru Dashboard și Setări; footer este fixat la baza paginii). • style.css – Fișierul de stiluri responsiv, cu design modern (gradient, blur, efecte de hover) și optimizat pentru diverse rezoluții (inclusiv la ecrane foarte mici, cu scroll orizontal pentru tabel). • index.php – Dashboard-ul aplicației: - Afișează contul activ (emailul contului implicit). - Afișează numărul total de emailuri (obținut prin AJAX). - Listează emailurile în format tabelar (paginat, 50 emailuri pe pagină) cu coloane: Nr., Expeditor, CC, Subiect, Corpul mesajului (cu fragment), Data, Ataș., Sursa și Acțiuni. - Permite selectarea multiplă a emailurilor și aplicarea acțiunilor bulk (export/ștergere) prin fișierul bulk_action.php. • fetch_emails.php – Scriptul AJAX care preia datele din baza de date și returnează un obiect JSON cu: - total: numărul total de emailuri ce corespund filtrului - emails: lista emailurilor pentru pagina curentă. • bulk_action.php – Procesează acțiunile de masă (export sau ștergere a emailurilor selectate). • email_detail.php – Pagina de detalii a unui email: - Afișează toate informațiile despre email (expeditor, CC, subiect, data, sursa, corpul mesajului). - Oferă un buton „Vizualizează raw” pentru a vedea conținutul original (cu taguri HTML escapate). - Listează atașamentele (dacă există) cu linkuri și iconițe. • export_email.php – Exportă un email individual într-un fișier HTML personalizat. • delete_email.php – Șterge un email individual din baza de date. • settings.php – Permite modificarea credențialelor admin și gestionarea conturilor de email suplimentare. --------------------------------------------------------- COMANDA SQL COMPLETĂ (pentru refacerea bazei de date) --------------------------------------------------------- Rulează următoarele comenzi în phpMyAdmin pentru a șterge și recrea tabelele: DROP TABLE IF EXISTS emails; DROP TABLE IF EXISTS email_history; DROP TABLE IF EXISTS accounts; DROP TABLE IF EXISTS admin; CREATE TABLE emails ( id INT AUTO_INCREMENT PRIMARY KEY, email VARCHAR(255) NOT NULL, cc VARCHAR(255) DEFAULT NULL, subject TEXT, body LONGTEXT, attachments TEXT, date_added DATETIME DEFAULT CURRENT_TIMESTAMP, source VARCHAR(255) DEFAULT 'default' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE email_history ( id INT AUTO_INCREMENT PRIMARY KEY, email VARCHAR(255) NOT NULL, action VARCHAR(50) NOT NULL, action_date DATETIME DEFAULT CURRENT_TIMESTAMP, details TEXT ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE accounts ( id INT AUTO_INCREMENT PRIMARY KEY, email VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, imap_host VARCHAR(255) NOT NULL, imap_port INT NOT NULL, imap_flags VARCHAR(50) NOT NULL, is_default TINYINT(1) DEFAULT 0 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE admin ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARCHAR(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; INSERT INTO accounts (email, password, imap_host, imap_port, imap_flags, is_default) VALUES ('vanzari@tubimax.ro', 'Sorin@Tubi2023', 'mail.tubimax.ro', 993, '/imap/ssl', 1); INSERT INTO admin (username, password) VALUES ('admin', '@TuBimax1@.'); --------------------------------------------------------- LINK-URI DE TESTARE --------------------------------------------------------- 1) Inițializarea bazei de date: https://tubimax.ro/mailextractor/init_db.php 2) Extragerea emailurilor: https://tubimax.ro/mailextractor/email_extractor.php?run_extractor=1 3) Accesul la panoul de administrare (autentificare): https://tubimax.ro/mailextractor/admin/login.php (User: admin | Parolă: @TuBimax1@.) 4) Dashboard (după autentificare): https://tubimax.ro/mailextractor/admin/index.php - Vei vedea: contul activ, numărul total de emailuri, lista paginată de emailuri și opțiuni bulk. 5) Pentru logout: https://tubimax.ro/mailextractor/admin/logout.php (Logout va redirecționa către pagina de login.) --------------------------------------------------------- NOTIȚII SUPLIMENTARE --------------------------------------------------------- - Folderul “attachments” trebuie creat în directorul “mailextractor” și să aibă permisiuni de scriere. - Aplicația este complet responsive: • La ecrane mari, lista de emailuri se afișează normal (coloane aliniate, scroll orizontal dacă tabelul este prea lat). • La ecrane foarte mici (sub 576px), fiecare rând se transformă într-un "card" vertical, folosind atributul data-label pentru a afișa etichetele coloanelor. - Footer-ul este fixat la baza paginii (dacă conținutul este scurt) și are un fundal radial cu efect de blur. - În index se afișează și numărul total de emailuri, iar contul activ (adresa de email folosită pentru extragere) este vizibil. - Funcționalități suplimentare: export individual și în masă, ștergere individuală și în masă, vizualizare raw a emailurilor. - Pentru un design modern și responsive, asigură-te că fișierul “style.css” din directorul “admin” este încărcat și că include meta viewport în header. --------------------------------------------------------- CONCLUZIE --------------------------------------------------------- Aplicația este finalizată și gata pentru testare. Te rugăm să accesezi link-urile de mai sus pentru a verifica funcționalitatea completă: - Inițializare DB, extragere emailuri, login, dashboard, export, ștergere, vizualizare detalii și logout. Spor la testare și succes!