Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Java EE 7: Geschäftsanwendungen

E-Mails versenden

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Den E-Mail-Versand bewerkstelligt im Java-EE-Umfeld die JavaMail-API. Hier sehen Sie, wie JavaMail funktioniert, konfigurieren den WildFly Server für den E-Mail-Versand und schicken eine Nachricht an alle Geburtstagskinder des heutigen Tages.

Transkript

Ganz typisch für eine moderne Applikation ist es dem Benutzer eine E-Mail zu senden, beispielsweise, weil er in unserem Fall, möglicherweise Geburtstag hat. Dies kann mit Hilfe von JavaMail gemacht werden. JavaMail ist eine API, der wir uns in diesem Video etwas näher widmen. Wie gesagt, es wird eine JavaMail-Implementierung genutzt, um E-Mails zu versenden, denn JavaMail selbst ist nur eine Spezifikation. Wenn wir mit JavaMail arbeiten wollen, verwenden wie ein MailSession-Definition. Diese MailSession-Definition beinhaltet dabei dann die Zugangsdaten für den Mailserver und das verwendete Protokoll. Und das definieren wir in Admin-Konsole unseres Application Servers oder alternativ natürlich direkt in den Konfigurationsdateien. Diese MailSession-Definition wird dann über einen JNDI-Namen referenziert, wenn wir eine Nachricht versenden wollen. Also auch hier ist eine Information darüber, was wir tatsächlich benutzen wollen, im Sinne von Benutzernamen, Kennwort und so weiter und so fort, nicht in unsere Application enthalten, sondern wird auf dem Server bereitgestellt und wir referenzierten das nur noch. Der eigentliche Versand einer E-Mail findet dann stets in Form derselben Schritte statt. Zunächst lassen wir uns eine Mail-Session injizieren. Diese Mail-Session repräsentiert die Konfiguration, die wir davor auf Ebene der Admin-Konsole des Application Servers angelegt haben. Dann werden wir eine Nachricht erstellt und die Inhalte setzen und diese Nachricht mit Hilfe der statische send()-Methode der Transportklasse versenden. Wir werden uns nun zunächst einmal der Konfiguration einer Mail-Session im Application Server widmen. Das ist nämlich oftmals notwendig, denn der Application Server selber hat zwar schon eine Standardkonfiguration, die zeigt aber immer nur auf die lokale Maschine und dort auf Port 25 und wenn Sie dort, wie das bei den meisten der Fall sein wird, keinen SMTP-Server installiert haben, denn werden Sie keine Nachricht versenden können. Wir widmen uns jetzt der Admin-Konsole unserer Application Servers zu. Zu diesem Zweck sollten Sie den Server nun starten. Wenn Ihr Server läuft, können Sie die Admin-Konsole über http://localhost:9990 aufrufen. Hier können Sie in den Bereich "Configuration" wechseln und hier können wir diverse Konfigurationen vornehmen. Zunächst einmal wechseln wir im Bereich "General Configuration" in den Bereich "Socket Binding". Hier klicken wir auf Option "View" bei den Standard-sockets und wenden uns hier den "Outbound Remote" Konfigurationen zu. Hier gibt es schon einen Eintrag mit dem Name "mail-smtp" und wir werden nun hier einmal einen Eintrag für Gmail hinzufügen. In diesem Beispiel werde ich Gmail benutzen, um E-Mail zu versenden. Sie können hier natürlich die Information zu ihrem Mail-Server eintragen. Ein klick auf Add erlaubt es uns diesen Binding einen Namen zu geben und das ist ein beliebiger Name, ich nenne dieses Binding "smtp.gmail.com" und der Host ist dann auch "smtp.gmail.com", das ist der Servername auf den wir zugreifen wollen und der Port bei Gmail, das habe ich vorher nachgeschaut, ist der Port 465. Ein Klick auf Save und ein Klick auf Save erlaubt es uns diese Konfiguration zu speichern und wenn wir dann noch einmal da draufgucken, denn sehen wir auch dass die Einstellungen übernommen worden sind. Nun wechseln wir in den Reiter ConnectorMail und können dann hier eine neue Mail-Session definieren. Zu diesem Zweck klicken wir auf die Schaltfläche "Add" und können hier nun eine JNDI-Name eingeben. Diese JNDI-Name sollte immer java:jboss/mail und nun Ihr Name sein, den Sie festlegen, in meinem Fall halt Google Mail ich klicke hier auf "Save" und habe nun die Mail-Session als solches eingelegt ein klick auf die Option "View" erlaubt es mir, hier dann ein paar mehr Informationen zu setzen, denn das müssen wir noch erledigen. Ich klicke nun also bei diesen Available Mail Servers auf Add und gebe hier das Socket Binding an und das ist wieder der Name meiner Konfiguration von vorhin, smtp.gmail.com, als Type wähle ich "smtp" aus, ich möchte eine Nachricht, versenden das geschickt per SMTP bei Benutzername und bei Kennwort gebe ich nun meine Zugangsdaten ein. Und ich klicke auf das Häkchen bei Use SSL. ein Klick auf "Save" übernimmt die Einstellungen und ich habe damit diese Konfiguration abgeschlossen und kann mich nun der Implementierung im Code widmen. Diese Implementierung nehmen wir auf Ebene unserem Message-Driven Bean vor, der ja ein Kunde, der heute Geburtstag hat übergeben wird. Zunächst werden wir uns eine Referenz auf die Mail-Session geben lassen, diese Mail-Session repräsentiert die Informationen, die wir vorhin angelegt haben und wird für den Versand der Nachricht benötigt. Wir lassen Sie uns per Resource Annotation dann injizieren. Nun können wir den Kunden daraufhin untersuchen, ob er überhaupt über eine E-Mail-Adresse verfügt. Zu diesem Zweck durchlaufen wir, seine Kommunikationsliste Sie erinnern sich eine Kunde verfügt über eine Eigenschaft communications und da drin befinden sich alle Kommunikationseinträge. Und uns interessiert der Kommunikationseintrag, der den Typ E-Mail hat. Sollten wir eine E-Mail Adresse gefunden haben, was wir nun gerade überprüfen, können wir fortfahren. Nun können wir nämlich die eigentliche Mail Nachricht, die versandt werden soll, erstellen. Dies machen wir mit Hilfe eine "javax.mail.Message" Instanz vom Typ MimeMessage. Und diese MimeMessage Instanz geben wir die injizierte Session mit hinein, damit weiß die Nachricht nämlich, wie Sie versandt werden soll. Nun können wir die Empfänger anlegen. Dies machen wir mit Hilfe der Methode setRecipients und hier können wir für jeden Empfängertyp, also TO oder CC oder BCC dann angeben, welche Empfängeradressen dort eingetragen werden sollen. Der erste Parameter ist immer der Empfängertyp und der zweite Parameter ist eine Instanz vom Typ InternetAddress, beziehungsweise eine Liste von Typ InternetAdress, da können Sie mehrere Adressen angeben, durch Kommata getrennt. Wir geben aber nur eine Adresse an, nämlich die, die wir aus der E-Mail Kommunikationsliste ausgelesen haben. Hierbei kann es zu ein Exception kommen. Aus diesem Grund fügen wir die dabei möglicherweise auftretenden Exceptions, nämlich eine AddressException und eine MessagingException der Catch-Klausel unseres Drei-Blocks hinzu, indem wir uns gerade befinden. Nun können wir den Betreff setzen, dies machen wir über die Methode setSubject und den eigentlichen Text können wie ebenfalls über die Methode setText setzen, hier können wir auch eine Zeichenkette eintragen, Zeilenumbrüche machen wir hier per harten Escaping, Sie können allerdings auch HTML-Nachrichten versenden, wenn Sie das möchten und zu guter Letzt versenden wir die Nachricht über die Transportklasse und deren statische send-Methode. Damit haben wir den Versand der Nachricht abgeschlossen. Wenn es jetzt früh um 9 wäre und wenn am heutigen Tag jemand Geburtstag hätte, dann würde dieser jenige eine fröhliche E-Mail mit dem Betreff "Happy Birthday" und dem Text "Hallo, Happy Birthday" und einen Smilie bekommen. Ich habe das mal ausgeführt, zugegebenermaßen nicht um 9 Uhr früh und das Ergebnis sieht so aus. Sie sehen alle Eigenschaften, die wir gesetzt haben, sind hier auch angekommen, "Happy Birthday" als Betreff und der Text, den wir gerade definiert haben und das ganze ist von unserem Mail-Server aus gesendet worden. In diesem Video haben wir uns damit auseinander gesetzt, wie wird mit JavaMail Nachrichten versenden können. Wir haben zunächst auf Ebene des Application-Servers alle grundlegenden Einstellungen getroffen und uns danach in unserer Message-Driven Bean, die getroffenen Einstellungen injizieren lassen, in Form einer Mail-Session und danach eine Nachricht erstellt und diese Nachricht dann am Ende versandt.

Java EE 7: Geschäftsanwendungen

Verfolgen Sie, wie eine komplette Business-Applikation unter dem Einsatz des gesamten Java-Enterprise-Techologiestacks ensteht.

5 Std. 2 min (39 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!