feat(editor): F4.6e the e-mail program and e-mail server on a computer's desktop

The oracle MailWindowRun uses Java's e-mail windows as a person does and
answers their dialogs. The core sets and saves the program's account,
deletes a mail, checks a form as Java's window does, and gives the server
its domain, new and removed accounts and the window's own line; the room
sends both programs' views and takes their actions; the editor has both
windows. Better than Java: a name field for a new account, a user name the
server has is refused, deleting hits the folder shown, a new domain goes
into the accounts file at once.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-03 16:44:36 +00:00
co-authored by Claude Opus 5.5
parent aa54e5400e
commit 11f13bca84
33 changed files with 2841 additions and 52 deletions
+509
View File
@@ -0,0 +1,509 @@
{
"steps": [
{
"step": "server:open",
"button": "Starten",
"domain": "filius.de",
"domainEnabled": true,
"accounts": [],
"username": "",
"log": "",
"accountsFile": "",
"dialogs": []
},
{
"step": "server:domain ungültig domain!",
"button": "Starten",
"domain": "filius.de",
"domainEnabled": true,
"accounts": [],
"username": "",
"log": "",
"accountsFile": "",
"dialogs": []
},
{
"step": "server:domain schule.de",
"button": "Starten",
"domain": "schule.de",
"domainEnabled": true,
"accounts": [],
"username": "",
"log": "",
"accountsFile": "",
"dialogs": []
},
{
"step": "server:start",
"button": "Anhalten",
"domain": "schule.de",
"domainEnabled": false,
"accounts": [],
"username": "",
"log": "POP3- und SMTP-Server wurden gestartet.\n",
"accountsFile": "",
"dialogs": []
},
{
"step": "server:add anna/geheim",
"button": "Anhalten",
"domain": "schule.de",
"domainEnabled": false,
"accounts": [
[
"anna@schule.de",
"0"
]
],
"username": "",
"log": "POP3- und SMTP-Server wurden gestartet.\n",
"accountsFile": "anna;schule.de;geheim;Nachname;Vorname;\n",
"dialogs": [
"Das Benutzerkonto anna wurde angelegt."
]
},
{
"step": "server:add /x",
"button": "Anhalten",
"domain": "schule.de",
"domainEnabled": false,
"accounts": [
[
"anna@schule.de",
"0"
]
],
"username": "",
"log": "POP3- und SMTP-Server wurden gestartet.\n",
"accountsFile": "anna;schule.de;geheim;Nachname;Vorname;\n",
"dialogs": [
"Geben Sie einen Benutzernamen und ein Passwort ein!"
]
},
{
"step": "server:add carl os/x",
"button": "Anhalten",
"domain": "schule.de",
"domainEnabled": false,
"accounts": [
[
"anna@schule.de",
"0"
]
],
"username": "carl os",
"log": "POP3- und SMTP-Server wurden gestartet.\n",
"accountsFile": "anna;schule.de;geheim;Nachname;Vorname;\n",
"dialogs": [
"Der Benutzername darf keine Leerzeichen enthalten!"
]
},
{
"step": "server:add ANNA/anders",
"button": "Anhalten",
"domain": "schule.de",
"domainEnabled": false,
"accounts": [
[
"anna@schule.de",
"0"
]
],
"username": "",
"log": "POP3- und SMTP-Server wurden gestartet.\n",
"accountsFile": "anna;schule.de;geheim;Nachname;Vorname;\n",
"dialogs": [
"Das Benutzerkonto ANNA wurde angelegt."
]
},
{
"step": "server:add bob/",
"button": "Anhalten",
"domain": "schule.de",
"domainEnabled": false,
"accounts": [
[
"anna@schule.de",
"0"
]
],
"username": "bob",
"log": "POP3- und SMTP-Server wurden gestartet.\n",
"accountsFile": "anna;schule.de;geheim;Nachname;Vorname;\n",
"dialogs": [
"Geben Sie einen Benutzernamen und ein Passwort ein!"
]
},
{
"step": "server:add bob/pw",
"button": "Anhalten",
"domain": "schule.de",
"domainEnabled": false,
"accounts": [
[
"anna@schule.de",
"0"
],
[
"bob@schule.de",
"0"
]
],
"username": "",
"log": "POP3- und SMTP-Server wurden gestartet.\n",
"accountsFile": "anna;schule.de;geheim;Nachname;Vorname;\nbob;schule.de;pw;Nachname;Vorname;\n",
"dialogs": [
"Das Benutzerkonto bob wurde angelegt."
]
},
{
"step": "client:open",
"inbox": [],
"sent": [],
"tab": 0,
"preview": "html",
"composing": false,
"accountFile": null,
"dialogs": []
},
{
"step": "client:account an na 110",
"inbox": [],
"sent": [],
"tab": 0,
"preview": "html",
"composing": false,
"accountFile": null,
"dialogs": [
"Die Angaben sind entweder fehlerhaft oder unvollständig!"
]
},
{
"step": "client:account anna 110x",
"inbox": [],
"sent": [],
"tab": 0,
"preview": "html",
"composing": false,
"accountFile": null,
"dialogs": [
"Die Angaben sind entweder fehlerhaft oder unvollständig!"
]
},
{
"step": "client:account anna 110",
"inbox": [],
"sent": [],
"tab": 0,
"preview": "html",
"composing": false,
"accountFile": "192.168.0.30;192.168.0.30;110;25;anna;geheim;Muster;Anna Maria;anna@schule.de",
"dialogs": []
},
{
"step": "client:account shown",
"fields": [
"Anna Maria Muster",
"anna@schule.de",
"192.168.0.30",
"110",
"192.168.0.30",
"25",
"anna",
"geheim"
]
},
{
"step": "client:send Falsch",
"inbox": [],
"sent": [],
"tab": 0,
"preview": "html",
"composing": true,
"composeFields": [
"bob@schule.de, kein",
"",
"",
"Falsch"
],
"composeText": "x",
"composeSender": "anna",
"accountFile": "192.168.0.30;192.168.0.30;110;25;anna;geheim;Muster;Anna Maria;anna@schule.de",
"dialogs": [
"Mindestens eine eingegebene E-Mail-Adresse ist nicht korrekt!"
]
},
{
"step": "client:send Leer",
"inbox": [],
"sent": [],
"tab": 0,
"preview": "html",
"composing": true,
"composeFields": [
"",
"",
"",
"Leer"
],
"composeText": "x",
"composeSender": "anna",
"accountFile": "192.168.0.30;192.168.0.30;110;25;anna;geheim;Muster;Anna Maria;anna@schule.de",
"dialogs": [
"Sie müssen mindestens eine Empfänger-Adresse eingeben!"
]
},
{
"step": "client:send Hallo",
"inbox": [],
"sent": [
[
"<bob@schule.de>",
"Hallo"
]
],
"tab": 1,
"preview": "html",
"composing": false,
"accountFile": "192.168.0.30;192.168.0.30;110;25;anna;geheim;Muster;Anna Maria;anna@schule.de",
"dialogs": []
},
{
"step": "client:send Selbst",
"inbox": [],
"sent": [
[
"<bob@schule.de>",
"Hallo"
],
[
"<anna@schule.de>",
"Selbst"
]
],
"tab": 1,
"preview": "html",
"composing": false,
"accountFile": "192.168.0.30;192.168.0.30;110;25;anna;geheim;Muster;Anna Maria;anna@schule.de",
"dialogs": []
},
{
"step": "server:after mails",
"button": "Anhalten",
"domain": "schule.de",
"domainEnabled": false,
"accounts": [
[
"anna@schule.de",
"1"
],
[
"bob@schule.de",
"1"
]
],
"username": "",
"log": "POP3- und SMTP-Server wurden gestartet.\n----\n192.168.0.20> 220 Willkommen bei schule.de\n192.168.0.20< HELO 192.168.0.20\n192.168.0.20> 250 Hello 192.168.0.20\n192.168.0.20< MAIL FROM: <anna@schule.de>\n192.168.0.20> 250 Sender OK\n192.168.0.20< RCPT TO:<bob@schule.de>\n192.168.0.20> 250 Recipient OK\n192.168.0.20< DATA\n192.168.0.20> 354 End data with <CR><LF>.<CR><LF>\n192.168.0.20< From: Anna Maria Muster <anna@schule.de>\nTo: <bob@schule.de>\nSubject: Hallo\n\nZeile 1\nZeile 2\r\n.\r\n\n192.168.0.20> 250 Mail queued for delivery\nE-Mail für bob im Postfach gespeichert.\n192.168.0.20< QUIT\n192.168.0.20> 221 Server beendet Verbindung.\n----\n192.168.0.20> 220 Willkommen bei schule.de\n192.168.0.20< HELO 192.168.0.20\n192.168.0.20> 250 Hello 192.168.0.20\n192.168.0.20< MAIL FROM: <anna@schule.de>\n192.168.0.20> 250 Sender OK\n192.168.0.20< RCPT TO:<anna@schule.de>\n192.168.0.20> 250 Recipient OK\n192.168.0.20< DATA\n192.168.0.20> 354 End data with <CR><LF>.<CR><LF>\n192.168.0.20< From: Anna Maria Muster <anna@schule.de>\nTo: <anna@schule.de>\nSubject: Selbst\n\nErste Zeile\nZweite Zeile\r\n.\r\n\n192.168.0.20> 250 Mail queued for delivery\nE-Mail für anna im Postfach gespeichert.\n192.168.0.20< QUIT\n192.168.0.20> 221 Server beendet Verbindung.\n",
"accountsFile": "anna;schule.de;geheim;Nachname;Vorname;#Anna Maria Muster <anna@schule.de>$<anna@schule.de>$$$$Selbst$Erste Zeile|Zweite Zeile|\nbob;schule.de;pw;Nachname;Vorname;#Anna Maria Muster <anna@schule.de>$<bob@schule.de>$$$$Hallo$Zeile 1|Zeile 2|\n",
"dialogs": []
},
{
"step": "client:fetch",
"inbox": [
[
"Anna Maria Muster",
"Selbst"
]
],
"sent": [
[
"<bob@schule.de>",
"Hallo"
],
[
"<anna@schule.de>",
"Selbst"
]
],
"tab": 0,
"preview": "html",
"composing": false,
"accountFile": "192.168.0.30;192.168.0.30;110;25;anna;geheim;Muster;Anna Maria;anna@schule.de",
"dialogs": []
},
{
"step": "client:choose inbox 0",
"inbox": [
[
"Anna Maria Muster",
"Selbst"
]
],
"sent": [
[
"<bob@schule.de>",
"Hallo"
],
[
"<anna@schule.de>",
"Selbst"
]
],
"tab": 0,
"preview": "Erste Zeile\nZweite Zeile\n",
"composing": false,
"accountFile": "192.168.0.30;192.168.0.30;110;25;anna;geheim;Muster;Anna Maria;anna@schule.de",
"dialogs": []
},
{
"step": "client:answer",
"inbox": [
[
"Anna Maria Muster",
"Selbst"
]
],
"sent": [
[
"<bob@schule.de>",
"Hallo"
],
[
"<anna@schule.de>",
"Selbst"
]
],
"tab": 0,
"preview": "Erste Zeile\nZweite Zeile\n",
"composing": true,
"composeFields": [
"Anna Maria Muster <anna@schule.de>",
"",
"",
"RE: Selbst"
],
"composeText": "\n\nAnna Maria Muster <anna@schule.de> schrieb:\n> Erste Zeile\n> Zweite Zeile\n> ",
"composeSender": "anna",
"accountFile": "192.168.0.30;192.168.0.30;110;25;anna;geheim;Muster;Anna Maria;anna@schule.de",
"dialogs": []
},
{
"step": "client:choose sent 0",
"inbox": [
[
"Anna Maria Muster",
"Selbst"
]
],
"sent": [
[
"<bob@schule.de>",
"Hallo"
],
[
"<anna@schule.de>",
"Selbst"
]
],
"tab": 0,
"preview": "Zeile 1\nZeile 2",
"composing": false,
"accountFile": "192.168.0.30;192.168.0.30;110;25;anna;geheim;Muster;Anna Maria;anna@schule.de",
"dialogs": []
},
{
"step": "client:delete inbox 0",
"inbox": [
[
"Anna Maria Muster",
"Selbst"
]
],
"sent": [
[
"<anna@schule.de>",
"Selbst"
]
],
"tab": 0,
"preview": " ",
"composing": false,
"accountFile": "192.168.0.30;192.168.0.30;110;25;anna;geheim;Muster;Anna Maria;anna@schule.de",
"dialogs": []
},
{
"step": "server:after fetch",
"button": "Anhalten",
"domain": "schule.de",
"domainEnabled": false,
"accounts": [
[
"anna@schule.de",
"0"
],
[
"bob@schule.de",
"1"
]
],
"username": "",
"log": "POP3- und SMTP-Server wurden gestartet.\n----\n192.168.0.20> 220 Willkommen bei schule.de\n192.168.0.20< HELO 192.168.0.20\n192.168.0.20> 250 Hello 192.168.0.20\n192.168.0.20< MAIL FROM: <anna@schule.de>\n192.168.0.20> 250 Sender OK\n192.168.0.20< RCPT TO:<bob@schule.de>\n192.168.0.20> 250 Recipient OK\n192.168.0.20< DATA\n192.168.0.20> 354 End data with <CR><LF>.<CR><LF>\n192.168.0.20< From: Anna Maria Muster <anna@schule.de>\nTo: <bob@schule.de>\nSubject: Hallo\n\nZeile 1\nZeile 2\r\n.\r\n\n192.168.0.20> 250 Mail queued for delivery\nE-Mail für bob im Postfach gespeichert.\n192.168.0.20< QUIT\n192.168.0.20> 221 Server beendet Verbindung.\n----\n192.168.0.20> 220 Willkommen bei schule.de\n192.168.0.20< HELO 192.168.0.20\n192.168.0.20> 250 Hello 192.168.0.20\n192.168.0.20< MAIL FROM: <anna@schule.de>\n192.168.0.20> 250 Sender OK\n192.168.0.20< RCPT TO:<anna@schule.de>\n192.168.0.20> 250 Recipient OK\n192.168.0.20< DATA\n192.168.0.20> 354 End data with <CR><LF>.<CR><LF>\n192.168.0.20< From: Anna Maria Muster <anna@schule.de>\nTo: <anna@schule.de>\nSubject: Selbst\n\nErste Zeile\nZweite Zeile\r\n.\r\n\n192.168.0.20> 250 Mail queued for delivery\nE-Mail für anna im Postfach gespeichert.\n192.168.0.20< QUIT\n192.168.0.20> 221 Server beendet Verbindung.\n----\n192.168.0.20> +OK POP3 server ready\n192.168.0.20< USER anna\n192.168.0.20> +OK enter password\n192.168.0.20< PASS geheim\n192.168.0.20> +OK Mailbox locked and ready\n192.168.0.20< STAT\n192.168.0.20> +OK 1 83\n192.168.0.20< LIST\n192.168.0.20> +OK 1 83\n0 83\n\n192.168.0.20< RETR 0\n192.168.0.20> +OK message follows \nFrom: Anna Maria Muster <anna@schule.de>\nTo: <anna@schule.de>\nSubject: Selbst\n\nErste Zeile\nZweite Zeile\n192.168.0.20< DELE 0\n192.168.0.20> +OK message marked for delete\n192.168.0.20< QUIT\n192.168.0.20> +OK\n",
"accountsFile": "anna;schule.de;geheim;Nachname;Vorname;\nbob;schule.de;pw;Nachname;Vorname;#Anna Maria Muster <anna@schule.de>$<bob@schule.de>$$$$Hallo$Zeile 1|Zeile 2|\n",
"dialogs": []
},
{
"step": "server:delete row 1",
"button": "Anhalten",
"domain": "schule.de",
"domainEnabled": false,
"accounts": [
[
"anna@schule.de",
"0"
]
],
"username": "",
"log": "POP3- und SMTP-Server wurden gestartet.\n----\n192.168.0.20> 220 Willkommen bei schule.de\n192.168.0.20< HELO 192.168.0.20\n192.168.0.20> 250 Hello 192.168.0.20\n192.168.0.20< MAIL FROM: <anna@schule.de>\n192.168.0.20> 250 Sender OK\n192.168.0.20< RCPT TO:<bob@schule.de>\n192.168.0.20> 250 Recipient OK\n192.168.0.20< DATA\n192.168.0.20> 354 End data with <CR><LF>.<CR><LF>\n192.168.0.20< From: Anna Maria Muster <anna@schule.de>\nTo: <bob@schule.de>\nSubject: Hallo\n\nZeile 1\nZeile 2\r\n.\r\n\n192.168.0.20> 250 Mail queued for delivery\nE-Mail für bob im Postfach gespeichert.\n192.168.0.20< QUIT\n192.168.0.20> 221 Server beendet Verbindung.\n----\n192.168.0.20> 220 Willkommen bei schule.de\n192.168.0.20< HELO 192.168.0.20\n192.168.0.20> 250 Hello 192.168.0.20\n192.168.0.20< MAIL FROM: <anna@schule.de>\n192.168.0.20> 250 Sender OK\n192.168.0.20< RCPT TO:<anna@schule.de>\n192.168.0.20> 250 Recipient OK\n192.168.0.20< DATA\n192.168.0.20> 354 End data with <CR><LF>.<CR><LF>\n192.168.0.20< From: Anna Maria Muster <anna@schule.de>\nTo: <anna@schule.de>\nSubject: Selbst\n\nErste Zeile\nZweite Zeile\r\n.\r\n\n192.168.0.20> 250 Mail queued for delivery\nE-Mail für anna im Postfach gespeichert.\n192.168.0.20< QUIT\n192.168.0.20> 221 Server beendet Verbindung.\n----\n192.168.0.20> +OK POP3 server ready\n192.168.0.20< USER anna\n192.168.0.20> +OK enter password\n192.168.0.20< PASS geheim\n192.168.0.20> +OK Mailbox locked and ready\n192.168.0.20< STAT\n192.168.0.20> +OK 1 83\n192.168.0.20< LIST\n192.168.0.20> +OK 1 83\n0 83\n\n192.168.0.20< RETR 0\n192.168.0.20> +OK message follows \nFrom: Anna Maria Muster <anna@schule.de>\nTo: <anna@schule.de>\nSubject: Selbst\n\nErste Zeile\nZweite Zeile\n192.168.0.20< DELE 0\n192.168.0.20> +OK message marked for delete\n192.168.0.20< QUIT\n192.168.0.20> +OK\n",
"accountsFile": "anna;schule.de;geheim;Nachname;Vorname;\n",
"dialogs": [
"Wollen Sie das Konto 'bob' wirklich entfernen?"
]
},
{
"step": "server:stop",
"button": "Starten",
"domain": "schule.de",
"domainEnabled": true,
"accounts": [
[
"anna@schule.de",
"0"
]
],
"username": "",
"log": "POP3- und SMTP-Server wurden gestartet.\n----\n192.168.0.20> 220 Willkommen bei schule.de\n192.168.0.20< HELO 192.168.0.20\n192.168.0.20> 250 Hello 192.168.0.20\n192.168.0.20< MAIL FROM: <anna@schule.de>\n192.168.0.20> 250 Sender OK\n192.168.0.20< RCPT TO:<bob@schule.de>\n192.168.0.20> 250 Recipient OK\n192.168.0.20< DATA\n192.168.0.20> 354 End data with <CR><LF>.<CR><LF>\n192.168.0.20< From: Anna Maria Muster <anna@schule.de>\nTo: <bob@schule.de>\nSubject: Hallo\n\nZeile 1\nZeile 2\r\n.\r\n\n192.168.0.20> 250 Mail queued for delivery\nE-Mail für bob im Postfach gespeichert.\n192.168.0.20< QUIT\n192.168.0.20> 221 Server beendet Verbindung.\n----\n192.168.0.20> 220 Willkommen bei schule.de\n192.168.0.20< HELO 192.168.0.20\n192.168.0.20> 250 Hello 192.168.0.20\n192.168.0.20< MAIL FROM: <anna@schule.de>\n192.168.0.20> 250 Sender OK\n192.168.0.20< RCPT TO:<anna@schule.de>\n192.168.0.20> 250 Recipient OK\n192.168.0.20< DATA\n192.168.0.20> 354 End data with <CR><LF>.<CR><LF>\n192.168.0.20< From: Anna Maria Muster <anna@schule.de>\nTo: <anna@schule.de>\nSubject: Selbst\n\nErste Zeile\nZweite Zeile\r\n.\r\n\n192.168.0.20> 250 Mail queued for delivery\nE-Mail für anna im Postfach gespeichert.\n192.168.0.20< QUIT\n192.168.0.20> 221 Server beendet Verbindung.\n----\n192.168.0.20> +OK POP3 server ready\n192.168.0.20< USER anna\n192.168.0.20> +OK enter password\n192.168.0.20< PASS geheim\n192.168.0.20> +OK Mailbox locked and ready\n192.168.0.20< STAT\n192.168.0.20> +OK 1 83\n192.168.0.20< LIST\n192.168.0.20> +OK 1 83\n0 83\n\n192.168.0.20< RETR 0\n192.168.0.20> +OK message follows \nFrom: Anna Maria Muster <anna@schule.de>\nTo: <anna@schule.de>\nSubject: Selbst\n\nErste Zeile\nZweite Zeile\n192.168.0.20< DELE 0\n192.168.0.20> +OK message marked for delete\n192.168.0.20< QUIT\n192.168.0.20> +OK\nPOP3- und SMTP-Server wurden angehalten.\n",
"accountsFile": "anna;schule.de;geheim;Nachname;Vorname;\n",
"dialogs": []
},
{
"step": "server:domain neu.de",
"button": "Starten",
"domain": "neu.de",
"domainEnabled": true,
"accounts": [
[
"anna@neu.de",
"0"
]
],
"username": "",
"log": "POP3- und SMTP-Server wurden gestartet.\n----\n192.168.0.20> 220 Willkommen bei schule.de\n192.168.0.20< HELO 192.168.0.20\n192.168.0.20> 250 Hello 192.168.0.20\n192.168.0.20< MAIL FROM: <anna@schule.de>\n192.168.0.20> 250 Sender OK\n192.168.0.20< RCPT TO:<bob@schule.de>\n192.168.0.20> 250 Recipient OK\n192.168.0.20< DATA\n192.168.0.20> 354 End data with <CR><LF>.<CR><LF>\n192.168.0.20< From: Anna Maria Muster <anna@schule.de>\nTo: <bob@schule.de>\nSubject: Hallo\n\nZeile 1\nZeile 2\r\n.\r\n\n192.168.0.20> 250 Mail queued for delivery\nE-Mail für bob im Postfach gespeichert.\n192.168.0.20< QUIT\n192.168.0.20> 221 Server beendet Verbindung.\n----\n192.168.0.20> 220 Willkommen bei schule.de\n192.168.0.20< HELO 192.168.0.20\n192.168.0.20> 250 Hello 192.168.0.20\n192.168.0.20< MAIL FROM: <anna@schule.de>\n192.168.0.20> 250 Sender OK\n192.168.0.20< RCPT TO:<anna@schule.de>\n192.168.0.20> 250 Recipient OK\n192.168.0.20< DATA\n192.168.0.20> 354 End data with <CR><LF>.<CR><LF>\n192.168.0.20< From: Anna Maria Muster <anna@schule.de>\nTo: <anna@schule.de>\nSubject: Selbst\n\nErste Zeile\nZweite Zeile\r\n.\r\n\n192.168.0.20> 250 Mail queued for delivery\nE-Mail für anna im Postfach gespeichert.\n192.168.0.20< QUIT\n192.168.0.20> 221 Server beendet Verbindung.\n----\n192.168.0.20> +OK POP3 server ready\n192.168.0.20< USER anna\n192.168.0.20> +OK enter password\n192.168.0.20< PASS geheim\n192.168.0.20> +OK Mailbox locked and ready\n192.168.0.20< STAT\n192.168.0.20> +OK 1 83\n192.168.0.20< LIST\n192.168.0.20> +OK 1 83\n0 83\n\n192.168.0.20< RETR 0\n192.168.0.20> +OK message follows \nFrom: Anna Maria Muster <anna@schule.de>\nTo: <anna@schule.de>\nSubject: Selbst\n\nErste Zeile\nZweite Zeile\n192.168.0.20< DELE 0\n192.168.0.20> +OK message marked for delete\n192.168.0.20< QUIT\n192.168.0.20> +OK\nPOP3- und SMTP-Server wurden angehalten.\n",
"accountsFile": "anna;schule.de;geheim;Nachname;Vorname;\n",
"dialogs": []
},
{
"accounts": "1",
"step": "server:accounts"
}
]
}