Man sollte beides unterstützen.
Abstrahiere den Zugriff auf den Mailserver und emuliere die Eigenschaften, die der Server nicht bietet, oder lass die weg, die nicht in beiden implementierbar sind.
Mach mehrere Module (idealer weise Objektorientiert) welche die selbe Schnittstelle bieten, dann braucht das restliche Programm gar nicht zu wissen, über welches Protokoll gearbeitet wird.
Es wären vier Module von Nöten:
- Eines das IMAP kann
- Eines das POP3 mit TOP kann
- Eines das simples POP3 kann
- Und ein Modul das feststellt welches Modul nun genutzt werden soll und das entsprechende lädt.
Dinge wie Mails markieren, verschieben, umbenennen, etc. kann man über POP3 nicht emulieren, ohne selber Daten zu speichern.
Aber das separate Anzeigen von Anhängen, Ausgabe der Länge einer Mail, Löschen eine Mail, usw. kann man auch über POP3 Realisieren.
Auf diese weise könnte man später auch Module schreiben, die auf nicht standardisierte Schnittstellen zugreift.