Obwohl es sehr einfach ist, JSP zum Senden von E-Mails zu verwenden, müssen dafür die JavaMail-API und das JavaBean Activation Framework installiert sein.
Laden Sie hier die neueste Version von JavaMail herunter.
Laden Sie hier die neueste Version des JavaBeans Activation Framework (JAF) herunter.
Laden Sie diese Dateien herunter und entpacken Sie sie. Im Stammverzeichnis sehen Sie eine Reihe von JAR-Paketen. Fügen Sie das Paket „mail.jar“ und das Paket „activation.jar“ zur Variablen CLASSPATH hinzu.
Dieses Beispiel zeigt, wie Sie eine einfache E-Mail von Ihrem Computer aus senden. Es wird davon ausgegangen, dass localhost mit dem Netzwerk verbunden ist und eine E-Mail senden kann. Bitte bestätigen Sie gleichzeitig erneut, dass das Paket mail.jar und das Paket activate.jar zur Variablen CLASSPATH hinzugefügt wurden.
<%@ page import="java.io.*,java.util.*,javax.mail.*"%><%@ page import="javax.mail.internet.*,javax.activation.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" %><% String result; // E-Mail-String des Empfängers an = "[email protected]"; // E-Mail-String des Absenders senden von = "[email protected]"; // Angenommen, Sie senden E-Mails vom lokalen Host. String host = "localhost" // Holen Sie sich das Systemeigenschaftenobjekt Properties = System.getProperties(); ( "mail.smtp.host", host); // Das Standard-Sitzungsobjekt abrufen. Session mailSession = Session.getDefaultInstance(properties); try{ // Ein Standard-MimeMessage-Objekt erstellen. MimeMessage message = new MimeMessage(mailSession); // Setzt das Header-Feld des From: header message.setFrom(new InternetAddress(from)); // Setzt das Header-Feld des To: header message.addRecipientType. TO, new InternetAddress(to)); // Betreff festlegen: Header-Feld message.setSubject("Dies ist die Betreffzeile!"); Legen Sie nun die eigentliche Nachricht fest. message.setText("Dies ist die tatsächliche Nachricht"); // Nachricht senden Transport.send(message); result = "Nachricht erfolgreich gesendet...."; (); result = „Fehler: Nachricht konnte nicht gesendet werden....“; } %><html><head><title>E-Mail senden mit JSP</title></head><body><center><h1>E-Mail mit JSP senden</h1></center><p align="center"><% out.println("Ergebnis: " + Ergebnis + "n"); %></p></body></html>
Besuchen Sie nun http://localhost:8080/SendEmail.jsp. Es wird eine E-Mail an [email protected] gesendet und die folgenden Ergebnisse angezeigt:
E-Mail mit JSP senden. Ergebnis: Nachricht erfolgreich gesendet....Wenn Sie eine E-Mail an mehrere Personen senden möchten, können Sie mit den unten aufgeführten Methoden mehrere E-Mail-Adressen angeben:
void addRecipients(Message.RecipientType-Typ, Address[]-Adressen) löst eine MessagingException ausDie Parameter werden wie folgt beschrieben:
Typ: Dieser Wert wird auf TO, CC oder BCC gesetzt. CC steht für Kopie, BCC steht für Schwarzkopie und TO wird im Beispielprogramm verwendet.
Adressen: Dies ist ein Array von E-Mail-Adressen. Wenn Sie eine E-Mail-Adresse angeben, müssen Sie die Methode InternetAddress() verwenden.
In diesem Beispiel wird eine einfache HTML-E-Mail gesendet. Es wird davon ausgegangen, dass Ihr lokaler Host mit dem Netzwerk verbunden ist und E-Mails senden kann. Bitte bestätigen Sie gleichzeitig erneut, dass das Paket mail.jar und das Paket activate.jar zur Variablen CLASSPATH hinzugefügt wurden.
Dieses Beispiel ist dem vorherigen Beispiel sehr ähnlich, aber in diesem Beispiel verwenden wir die Methode setContent() und übergeben „text/html“ als zweiten Parameter, um anzugeben, dass die Nachricht HTML-Inhalt enthält.
<%@ page import="java.io.*,java.util.*,javax.mail.*"%><%@ page import="javax.mail.internet.*,javax.activation.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" %><% String result; // E-Mail-String des Empfängers an = "[email protected]"; // E-Mail-String des Absenders senden von = "[email protected]"; // Angenommen, Sie senden E-Mails vom lokalen Host. String host = "localhost" // Holen Sie sich das Systemeigenschaftenobjekt Properties = System.getProperties(); ( "mail.smtp.host", host); // Das Standard-Sitzungsobjekt abrufen. Session mailSession = Session.getDefaultInstance(properties); try{ // Ein Standard-MimeMessage-Objekt erstellen. MimeMessage message = new MimeMessage(mailSession); // Setzt das Header-Feld des From: header message.setFrom(new InternetAddress(from)); // Setzt das Header-Feld des To: header message.addRecipientType. TO, new InternetAddress(to)); // Betreff festlegen: Header-Feld message.setSubject("Dies ist die Betreffzeile!"); HTML-Nachricht festlegen message.setContent("<h1>Dies ist die tatsächliche Nachricht</h1>","text/html" ); // Nachricht senden Transport.send(message); result = "Nachricht erfolgreich gesendet...." ; }catch (MessagingException mex) { mex.printStackTrace(); result = "Fehler: Nachricht kann nicht gesendet werden...."; JSP</title></head><body><center><h1>E-Mail mit JSP senden</h1></center><p align="center"><% out.println("Ergebnis: " + Ergebnis + "n"); %></p></body></html>
Jetzt können Sie versuchen, die obige JSP-Datei zu verwenden, um eine HTML-Nachricht per E-Mail zu senden.
Dieses Beispiel zeigt uns, wie wir eine E-Mail mit einem Anhang versenden.
<%@ page import="java.io.*,java.util.*,javax.mail.*"%><%@ page import="javax.mail.internet.*,javax.activation.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" %><% String result; // E-Mail-String des Empfängers an = "[email protected]"; // E-Mail-String des Absenders senden von = "[email protected]"; // Angenommen, Sie senden E-Mails vom lokalen Host. String host = "localhost" // Holen Sie sich das Systemeigenschaftenobjekt Properties = System.getProperties(); ( "mail.smtp.host", host); // Das Standard-Sitzungsobjekt abrufen. Session mailSession = Session.getDefaultInstance(properties); try{ // Ein Standard-MimeMessage-Objekt erstellen. MimeMessage message = new MimeMessage(mailSession); // Setzt das Header-Feld des From: header message.setFrom(new InternetAddress(from)); // Setzt das Header-Feld des To: header message.addRecipientType. TO, new InternetAddress(to)); //Legen Sie das Betrefffeld fest: message.setSubject("Dies ist die Betreffzeile!" //Erstellen Sie den Nachrichtenteil BodyPart messageBodyPart = new MimeBodyPart(); // Füllen Sie die Nachricht aus messageBodyPart.setText("Dies ist der Nachrichtentext"); // Erstellen Sie eine Multimedia-Nachricht Multipart = new MimeMultipart(); messageBodyPart); // Anhangsteil messageBodyPart = new MimeBodyPart(); String filename = "file.txt"; new FileDataSource(filename); messageBodyPart.setDataHandler(new DataHandler(source)); multipart.addBodyPart(messageBodyPart); // Senden Sie die Nachricht Transport .send (Nachricht); String title = „E-Mail senden“; Ergebnis = „Nachricht erfolgreich gesendet …“; (MessagingException mex) { mex.printStackTrace(); result = „Fehler: Nachricht kann nicht gesendet werden …“ } %><html><head><title>Anhang per JSP senden</title></head ><body><center><h1>Anhangs-E-Mail mit JSP senden</h1></center><p align="center"><% out.println("Ergebnis: " + Ergebnis + "n"); %></p></body></html>
Wenn der Mailserver zur Benutzerauthentifizierung einen Benutzernamen und ein Passwort benötigt, kann dies wie folgt eingestellt werden:
props.setProperty("mail.user", "myuser"); props.setProperty("mail.password", "mypwd");Verwenden Sie ein HTML-Formular, um eine E-Mail zu empfangen und alle E-Mail-Informationen über das Anforderungsobjekt abzurufen:
String to = request.getParameter("to");String from = request.getParameter("from");String subject = request.getParameter("subject");String messageText = request.getParameter("body");Sobald Sie über die oben genannten Informationen verfügen, können Sie die E-Mail anhand des zuvor genannten Beispiels versenden.