Mailvorlagen aus Textdateien

Smoothi

Bekanntes Mitglied
Eigentlich programmier ich derzeit mit Java EE, aber ich glaube hier ist meine Frage besser aufgehoben, da es recht allgemeines Java ist. ;)

Eigentlich ist es ganz simpel. Heute morgen habe ich es hinbekommen mit JavaMail Mails zu versenden. Nun möchte ich meinem Arbeitgeber aber die Freiheit geben, Mails zu verändern, ohne im Programm herumzuschreiben.

Derzeit löse ich es so:
Java:
mailService.sendMail(Config.getMailServer(), 
                             Config.getSenderAddress(), 
                             operator.getMail(), 
                             "Benutzerkonto", 
                             "Für Sie wurde ein Benutzerkonto angelegt.\n\nLogin: " + operator.getLogin() 
                             + "\nPasswort: " + operator.getPassword() 
                             + "\n\nDiese E-Mail wurde automatisch erstellt. Bitte antworten Sie nicht darauf.");

Interessant ist als nur der Teil:
Java:
                             "Für Sie wurde ein Benutzerkonto angelegt.\n\nLogin: " + operator.getLogin() 
                             + "\nPasswort: " + operator.getPassword() 
                             + "\n\nDiese E-Mail wurde automatisch erstellt. Bitte antworten Sie nicht darauf.");

Was ich nun möchte sind txt-Dateien, die dann wie folgt aussehen:
Code:
Für Sie wurde ein Benutzerkonto angelegt.

Login: {LOGIN}
Passwort: {PASSWORD}

E-Mail wurde automatisch erstellt. Bitte antworten Sie nicht darauf.

{LOGIN} und {PASSWORT} sollte dann mit den jeweiligen Variablen ersetzt werden.

Habe sowas leider noch nie gemacht und habe keine Idee, wie das realisiert wird.

Meine IDE: NetBeans
 

HoaX

Top Contributor
Wenn du ich mit ${variable} anfreunden kannst, dann würde ich z.B. groovy einbinden und das GStringTemplate verwenden. Siehe dazu auch Groovy - Groovy Templates

So kannst du sogar Schleifen usw in den Templates verwenden um Listen etc. auszugeben.
 

HoaX

Top Contributor
Triviale Lösung ohne große Templateengine:
1) Speicher deine zur Verfügung stehenden Variablen in einer Map ab.
2) Lade dein Tempalte in einen String "t"
3) Iteriere über die Keys der Map und rufe t.replaceAll("{"+key+"}", map.get(key)); auf

Großer Vorteil der Templateengine ist allerdings, dass du eine saubere Trennung hast. D.h. du hast einfach eine Variable vom Typ Date und das Template entscheidet selbst ob es Datum, Zeit, oder beides, und in welchem Format anzeigt. Bei der trivialen Lösung landet diese ganze Logik fest im Code.
 
Zuletzt bearbeitet:

Smoothi

Bekanntes Mitglied
An Groovy habe ich garnicht gedacht ;) Damit arbeite ich ja so oder so, wenn ich JSF verwende.

Muss nur mal schauen, wie ich damit in dem Fall arbeite. Die Beispiele in dem Link werden nicht angezeigt...wahrscheinlich vom Arbeitgeber blockiert. :/

EDIT: Danke auch für die zweite Lösung. ;) Ich werd mal beides anschauen. Vermutlich werde würde mir die zweite Lösung schon reichen, da es nicht allzu komplex wird. Ich lass den Thread erstmal offen und mach ihn zu, wenns geklappt hat.
 
Zuletzt bearbeitet:

Smoothi

Bekanntes Mitglied
Was mir aber gerade noch einfällt:
Wo lege ich die TXT-Dateien ab. Ich arbeite ja mit Java EE. Da habe ich einen "resources"-Ordner (direkt unter Web-Pages), wo ich Bilder, CSS-Dateien, JavaScript etc. abgelegt habe.

Oder schieb ich das besser woanders hin?
 


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...

Ähnliche Java Themen

Neue Themen


Oben