Ik ben van plan een pop3 mail client te maken (onderdeel van een groter project). Een aantal van de functies die ik wil inbouwen staan hieronder
- berichten lezen van de mailserver
- berichten plaatsen in de database
- nested folders
- verschillende mailservers kunnen benaderen per gebruiker
- berichten schrijven
Bij het inlezen van de berichten van mailserver voorzie ik niet veel problemen. Gister met behuld van de manual @ php.net is het me binnen een half uurtje gelukt om de headers (from, subject, date) van de server te lezen en in een tabelletje te poepen
Bij het plaatsen van de berichten in de database begint de problemen een beetje, ik vraag me namelijk af hoe ik mijn tabellen moet ontwerpen
...
ik dacht zelf aan het volgende:
(hou er rekening mee dat de user_id bekend is, en in een andere tabel staat opgeslagen)
[mail_boxes]
[box_id][user_id][label][settings]
box_id : samen met user_id een uniek nummer
user_id : logisch
label : naam van de mailbox (werk, prive, gmx o.i.d.)
settings : gegevens van die mailbox, server, login, pass. Maar ook return-to email adres, naam, footer, etc. alles van die "mail-omgeving".
[mail_folders]
[folder_id][user_id][box_id][parent][label]
folder_id : samen met box_id en user_id een uniek nummer
user_id : logisch
box_id : logisch
parent : id van welke folder_id dit een subfolder is
label : hoe wordtie aan de buitenwereld gepresenteerd
[mail_messages]
[mail_id][user_id][box_id][folder_id][header][body][from][to][cc][bcc][subject][date][priority]
mail_id : samen met user_id, box_id, folder_id een uniek nummer
user_id : logisch
box_id : logisch
folder_id : logisch
[header] ..... [priority] : het bericht zelf.
Het programma zelf zie als volgt voor me:
- gebruiker logt in
- de default mailbox wordt gecheckt
- de bericht-headers (form, subject, date, size) worden weergegeven
- bericht wordt gelezen:
op het moment dat een bericht gelezen wordt, wordt er een entry in de database gemaakt. Daarin wordt het hele bericht opgeslagen. Als folder_id van die betreffende mailbox wordt 0 (nul) gebruikt, daaraan kan je dus zien dat het mailtje ook nog op de server aanwezig is. Heeft de gebruiker ingesteld dat hij de berichten automatisch wil downloaden bij dan worden deze berichten meteen al aangemaakt, alleen dan met folder_id 1 , inbox.
Als de berichten een mail in de database staan is het verder "eenvoudig".... De berichten worden dan verplaatst naar andere folders, of misschien wel naar een andere mailbox, maar dit is allemaal gewoon een eigenschap van een berichtje (makkelijk te wijzigen dus).
Mijn concrete vragen zijn eigenlijk de volgende:
- Is er iemand die (liefst onderbouwd
) commentaar kan geven op deze data-structuur?
in ieder geval al bedankt voor het lezen van deze (te?) lange post!
- berichten lezen van de mailserver
- berichten plaatsen in de database
- nested folders
- verschillende mailservers kunnen benaderen per gebruiker
- berichten schrijven
Bij het inlezen van de berichten van mailserver voorzie ik niet veel problemen. Gister met behuld van de manual @ php.net is het me binnen een half uurtje gelukt om de headers (from, subject, date) van de server te lezen en in een tabelletje te poepen
Bij het plaatsen van de berichten in de database begint de problemen een beetje, ik vraag me namelijk af hoe ik mijn tabellen moet ontwerpen

ik dacht zelf aan het volgende:
(hou er rekening mee dat de user_id bekend is, en in een andere tabel staat opgeslagen)
[mail_boxes]
[box_id][user_id][label][settings]
box_id : samen met user_id een uniek nummer
user_id : logisch
label : naam van de mailbox (werk, prive, gmx o.i.d.)
settings : gegevens van die mailbox, server, login, pass. Maar ook return-to email adres, naam, footer, etc. alles van die "mail-omgeving".
[mail_folders]
[folder_id][user_id][box_id][parent][label]
folder_id : samen met box_id en user_id een uniek nummer
user_id : logisch
box_id : logisch
parent : id van welke folder_id dit een subfolder is
label : hoe wordtie aan de buitenwereld gepresenteerd
[mail_messages]
[mail_id][user_id][box_id][folder_id][header][body][from][to][cc][bcc][subject][date][priority]
mail_id : samen met user_id, box_id, folder_id een uniek nummer
user_id : logisch
box_id : logisch
folder_id : logisch
[header] ..... [priority] : het bericht zelf.
Het programma zelf zie als volgt voor me:
- gebruiker logt in
- de default mailbox wordt gecheckt
- de bericht-headers (form, subject, date, size) worden weergegeven
- bericht wordt gelezen:
op het moment dat een bericht gelezen wordt, wordt er een entry in de database gemaakt. Daarin wordt het hele bericht opgeslagen. Als folder_id van die betreffende mailbox wordt 0 (nul) gebruikt, daaraan kan je dus zien dat het mailtje ook nog op de server aanwezig is. Heeft de gebruiker ingesteld dat hij de berichten automatisch wil downloaden bij dan worden deze berichten meteen al aangemaakt, alleen dan met folder_id 1 , inbox.
Als de berichten een mail in de database staan is het verder "eenvoudig".... De berichten worden dan verplaatst naar andere folders, of misschien wel naar een andere mailbox, maar dit is allemaal gewoon een eigenschap van een berichtje (makkelijk te wijzigen dus).
Mijn concrete vragen zijn eigenlijk de volgende:
- Is er iemand die (liefst onderbouwd
in ieder geval al bedankt voor het lezen van deze (te?) lange post!