Ideen für neuen Webmail Client PHP/Laravel MIT-Lizenz

david191186

Member
Wie ich bereits in einem anderen Thread schon geschrieben habe, erstelle ich einen WebmailClient für mein eigenes Protfolio.
Ich möchte meine Ideen in diesem Forum sammeln, weil hier viele Mitglieder sind welche sich auskennen.

Ziele:
  1. Verbesserungen eigener Skills beim programmieren.
  2. Nur das nötigste, was wirklich gebraucht wird. Also ziemlich light weight was die funktionen betrifft
  3. Der Client soll wirklich einen nutzen haben.
  4. Sehr einfache Installation auf einem PHP Server mit PHP IMAP.
  5. Scalable: Der Client soll mit viel Traffic auskommen.
  6. Datenbank-Sharding falls nötig

Keine Ziele:

  1. Ich habe nicht das Ziel, Roundcube oder Horde, oder Afterlogics zu ersetzen. Alle haben ihre Stärken und Schwächen. Es macht keinen Sinn ein zweites Roundcube zu erstellen. Ich möchte nur das nötigste.

Der Beste Webclient welcher für mich momentan auf dem Markt ist, ist Roundcube.

Probleme welche ich nach Jahren mit Roundcube habe, und welche ich besser machen möchte.

1. Das Problem mit der config.inc.php. Nach dem Installer wird eine config.inc erstellt. Leider wird keine .env Datei erstellt, diese würde es möglich machen gewisse Einträge zu ändern, ohne Merge Konflikte verursachen. Wenn man mit GIT arbeitet, ist das absolut nervig. Gerade wenn man mit Branches arbeitet und Roundcube updaten möchte. Deshalb hatte ich .env, schon vor Jahren selbst in Roundcube eingefügt.

2. Das Problem mit den Server Einstellungen in der config.inc.
Code:
IMAP
// %n - hostname ($_SERVER['SERVER_NAME'])
// %t - hostname without the first part
// %d - domain (http hostname $_SERVER['HTTP_HOST'] without the first part)
// %s - domain name after the '@' from e-mail address provided at login screen

SMTP
// %h - user's IMAP hostname
// %n - hostname ($_SERVER['SERVER_NAME'])
// %t - hostname without the first part
// %d - domain (http hostname $_SERVER['HTTP_HOST'] without the first part)
// %z - IMAP domain (IMAP hostname without the first part)

Mit diesen Settings hätte z.b. der Hoster Allinkl. ein Problem. Weil der IMAP_HOST und SMTP_HOST bei jedem User anders ist.
Code:
user1 = w123456.kasserver.com
user2 = w244344.kasserver.com

Ich finde das kann man besser lösen.
1. Die Host Domain ist immer gleich. Diesen Wert sollte man in einer config.php festlegen.
Bash:
kasserver.com
gmail.com
web.de
t-online.de
gmx.net
your-server.de

2. Der Imap und Smtp Subdomain dagegen ist bei manchen Anbietern dynamisch.
Code:
w123456.kasserver.com (dynamisch)

imap.gmail.com (gleich)

imap.web.de (gleich)

secureimap.t-online.de (gleich)

imap.gmx.net (gleich)

mail.your-server.de (gleich)

Das bedeutet, es ist keine gute Idee die Subdomain in der config zu speichern. Stattdessen sollte dieser Wert in der User Session oder Datenbank gespeichert werden.
Mit diesen Setting ist es absolut egal, wie die Einstellungen des Mailservers es funktioniert einfach und simple.

login2.png



login3.png


Mit einem einfachen Parameter, lassen sich die automatisch ausfüllen, sodass der User das gar nicht mitbekommt.

Code:
http://slimmail.test/login?imap_username=w123456&smtp_username=w123456

login4.png


Das Design sieht ganz normal aus nichts besonders.

client-index.png


client-show.png

So das reicht erstmal für heute. Ich habe natürlich noch mehr Ideen, aber ich möchte nicht alles in ein Beitrag schreiben.
 
Last edited:
Es gibt in Roundcube und vermutlich auch in Horde, in Bereich Identitäten, die BCC Blindkopie und Antwort an.

roundcube1.png


Ich selbst habe immer Identitäten benutzt, aber nicht die BCC und Antwort an.
Ich finde BCC hat schon seinen Sinn auch wenn ich es nicht genutzt habe, aber "Antwort an"? Wenn ich dort eine Email eintrage, wird diese automatisch mit gesendet. Das gleiche mit der Blindkopie.

Haltet ihr diese Funktion noch sinnvoll und benutzt ihr diese auch im Alltag? Weil bei den meisten Anbietern kann man schon in deren Dashboard E-Mail-Aliase erstellen. Hier wäre schon die erste Überlegung das mit einzubauen oder nicht.
 
Ich bin fast fertig. Hier mal wieder ein neuer Screenshot.

Screenshot 2024-10-30 090520.png



Ich hatte noch überlegt das INBOX_ZERO Prinzip einzubauen. Ich muss sagen, mir gefällt dieses Prinzip. Die Idee kam von diesen Video:

To view this content we will need your consent to set third party cookies.
For more detailed information, see our cookies page.

Haltet ihr INBOX Zero für sinnvoll?
 
@Sonyo Übrigens, ich habe den Queue mit eingebaut. Man kann entweder Emails Syncron senden, oder mit folgenden Queue Driver, Database, Redis.

Als Option sicher keine dumme Idee.

Okay, ich finde das auch gut. Man könnte es so machen das die Ordner am Anfang automatisch erstellt werden.

  • Antworten: In diesen Ordner verschiebst du alle Mails, die du innerhalb kürzester Zeit – am besten innerhalb von maximal fünf Minuten – beantworten kannst.
  • Aktion erforderlich: Benötigst du zum Bearbeiten einiger Nachrichten etwas länger, weil du für die Antwort beispielsweise noch etwas recherchieren oder mehrere Anhänge hinzufügen musst? Dann sind diese Mails im Ordner „Aktion erforderlich“ richtig aufgehoben.
  • Delegiert: Nicht selten erhalten wir E-Mails, für die wir gar nicht der oder die richtige Ansprechpartner:in sind. Solche E-Mails verschiebst du am besten in den „Delegiert-Ordner“ und leitest sie an die richtige Adresse weiter.
  • Archiviert: Mails, die du bearbeitet hast, aber nicht löschen möchtest, kommen in den „Archiviert-Ordner“. Dort kannst du sie auch später noch aufrufen.

Dazu könnte man noch mittels Javascript die Tastaturbefehle mit einbauen. Allerdings habe ich die Buttons extra 1 Klick entfernt gemacht, sodass man dies eigentlich nicht braucht. Was meint ihr? Gmail nutzt diese:
  • c - Neue E-Mail erstellen
  • r - Antwort an Absender
  • a - Allen antworten
  • f - Weiterleiten
  • e - Archivieren
  • # - Löschen
  • u - Als ungelesen markieren
  • y - Aus aktuellen Ordner entfernen
  • j / k - Zur nächsten/vorherigen E-Mail
Ich möchte auch noch Kontakte und Termine mit drin haben. Für die Kontakte habe ich mich für das Format vCard-Format v3.0 entschieden.
 
Nochmal eine Frage wegen einem Installer.
Ich vermute mal die meisten von euch haben einen Server mit SSH Zugriff. Dadurch das Laravel aber Composer und NPM benötigt, überlege ich einen WebInstaller zu erstellen. Roundcube hat diesen auch, oder Wordpress. Auf diese Weise benötigt der Server kein Composer und kein NPM.
Kurz gesagt, ein Webinstaller bringt die Applikation nahezu auf jedem SharedHosting zum laufen.
 
Back
Top