habs nur kurz überflogen, aber es sieht so aus, als bräuchte die session das passwort im klartext.
die einfachste variante ist jetzt, dass du in PasswordAuthentication#getPassword ne kleine entschlüsselung einbaust und das passwort entsprechend verschlüsselt in nem string vorhältst. sicher ist das nicht, aber es verhindert zumindest, dass das passwort schon direkt im class file in reintext steht.
die nächste stufe wäre, dass passwort von einem servlet liefern zu lassen, das auf deinem eigenen server rennt. dann müsste nen cracker schon die kommunikation sniffen oder nen memory dump der vm durchforsten, um das passwort zu finden.
und die dritte stufe ist, das mail versenden komplett an nen servlet zu übergeben und den client nur den inhalt senden zu lassen. auslagerung ist die einzig sichere art, inhalte zu schützen.