English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JSP-E-Mail-senden

Obwohl das Senden von E-Mails mit JSP einfach ist, ist die JavaMail API erforderlich und es muss das JavaBean Activation Framework installiert werden.

  • Sie können die neueste Version von Java von der Java-Website herunterladen JavaMailÖffnen Sie die rechte Seite der Webseite, dort gibt es einen Downloads Klick auf den Link, um die Datei herunterzuladen.

  • Sie können die neueste Version von Java von der Java-Website herunterladen JAF (Version 1.1.1).

Laden Sie diese Dateien herunter und entpacken Sie sie. Im Stammverzeichnis sehen Sie eine Reihe von jar-Paketen. Fügen Sie die Pakete mail.jar und activation.jar der CLASSPATH-Variablen hinzu.

Eine einfache E-Mail senden

Dieser Beispielcode zeigt, wie man von Ihrem Computer eine einfache E-Mail sendet. Es wird davon ausgegangen, dass localhost bereits mit dem Netzwerk verbunden ist und die Fähigkeit hat, eine E-Mail zu senden. Gleichzeitig bitte noch einmal überprüfen, ob die mail.jar und activation.jar-Pakete in die CLASSPATH-Variablen 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;
   // Empfänger-E-Mail
   String to = "[email protected]";
   // Absender-E-Mail
   String from = "[email protected]";
   // Angenommen, Sie senden E-Mails von einem lokalen Host
   String host = "localhost";
   // Erhalten Sie das Systemeigenschaftsobjekt
   Properties properties = System.getProperties();
   // Stellen Sie den E-Mail-Server ein
   properties.setProperty("mail.smtp.host", host);
   // Erhalten Sie das Standard-Session-Objekt.
   Session mailSession = Session.getDefaultInstance(properties);
   try{
      // Erstellen Sie ein Standard-MimeMessage-Objekt.
      MimeMessage message = new MimeMessage(mailSession);
      // Set From: header field
      message.setFrom(new InternetAddress(from));
      // Set To: header field
      message.addRecipient(Message.RecipientType.TO,
                               new InternetAddress(to));
      // Set Subject: header field
      message.setSubject("This is the Subject Line!");
      // Jetzt gesetzte tatsächliche Nachricht
      message.setText("Dies ist die tatsächliche Nachricht");
      // Send message
      Transport.send(message);
      result = "Sent message successfully....";
   }catch (MessagingException mex) {
      mex.printStackTrace();
      result = "Error: unable to send message....";
   }
%>
<html>
<head>
<title>E-Mail mit JSP senden</<title>
</<head>
<body>
<center>
<h1>Senden Sie E-Mail über JSP</h1>
</center>
<p align="center">
<% 
   out.println("Ergebnis: " + result + "\n");
%>
</p>
</body>
</html>

Besuchen Sie jetzt http://localhost:8080/SendEmail.jsp wird eine E-Mail an [email protected] senden und das folgende Ergebnis anzeigen:

E-Mail mit JSP senden
Ergebnis: E-Mail erfolgreich gesendet....

Wenn Sie E-Mails an mehrere Personen senden möchten, können die folgenden Methoden verwendet werden, um mehrere E-Mail-Adressen anzugeben:

void addRecipients(Message.RecipientType type, 
                   Address[] addresses)
throws MessagingException

Beschreibung der Parameter:

  • type: Dieser Wert wird auf TO (Empfänger), CC oder BCC gesetzt. CC bedeutet Carbon Copy (Kopie), BCC bedeutet Blind Carbon Copy (vertrauliche Kopie). Im Beispielprogramm wird TO verwendet.

  • addresses: Dies ist ein Array von E-Mail-Adressen, bei der Angabe von E-Mail-Adressen muss die Methode InternetAddress() verwendet werden.

Eine HTML-E-Mail senden

Dieser Beispielcode sendet eine einfache HTML-E-Mail. Es wird davon ausgegangen, dass Ihr localhost bereits mit dem Netzwerk verbunden ist und die Fähigkeit hat, E-Mails zu senden. Gleichzeitig bitte noch einmal überprüfen, ob die mail.jar und activation.jar-Pakete in die CLASSPATH-Variablen hinzugefügt wurden.

Dieser Beispielcode ist sehr ähnlich wie der vorherige, aber in diesem Fall verwenden wir die setContent() Methode, um "text"/html" als zweiten Parameter an es übergeben, um anzuzeigen, dass die Nachricht HTML-Inhalte 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;
   // Empfänger-E-Mail
   String to = "[email protected]";
   // Absender-E-Mail
   String from = "[email protected]";
   // Angenommen, Sie senden E-Mails von einem lokalen Host
   String host = "localhost";
   // Erhalten Sie das Systemeigenschaftsobjekt
   Properties properties = System.getProperties();
   // Stellen Sie den E-Mail-Server ein
   properties.setProperty("mail.smtp.host", host);
   // Erhalten Sie das Standard-Session-Objekt.
   Session mailSession = Session.getDefaultInstance(properties);
   try{
      // Erstellen Sie ein Standard-MimeMessage-Objekt.
      MimeMessage message = new MimeMessage(mailSession);
      // Set From: header field
      message.setFrom(new InternetAddress(from));
      // Set To: header field
      message.addRecipient(Message.RecipientType.TO,
                               new InternetAddress(to));
      // Set Subject: header field
      message.setSubject("This is the Subject Line!");
     
      // Setzen Sie die HTML-Nachricht
      message.setContent("<h1>Dies ist die tatsächliche Nachricht</h1>",
                            "text/html" );
      // Send message
      Transport.send(message);
      result = "Sent message successfully....";
   }catch (MessagingException mex) {
      mex.printStackTrace();
      result = "Error: unable to send message....";
   }
%>
<html>
<head>
<title>Senden Sie HTML-E-Mail über JSP</<title>
</<head>
<body>
<center>
<h1>Senden Sie E-Mail über JSP</h1>
</center>
<p align="center">
<% 
   out.println("Ergebnis: " + result + "\n");
%>
</p>
</body>
</html>

Jetzt können Sie versuchen, die obige JSP-Datei zu verwenden, um eine E-Mail mit HTML-Nachricht zu senden.

Fügen Sie Anhänge zu einer E-Mail hinzu

Dieser Beispielcode zeigt uns, wie man eine E-Mail mit Anhängen sendet.

<%@ page import="java.io."*,java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet."*,javax.activation.*"%>
<%@ page import="javax.servlet.http."*,javax.servlet.*" %>
<%
   String result;
   // Empfänger-E-Mail
   String to = "[email protected]";
   // Absender-E-Mail
   String from = "[email protected]";
   // Angenommen, Sie senden E-Mails von einem lokalen Host
   String host = "localhost";
   // Erhalten Sie das Systemeigenschaftsobjekt
   Properties properties = System.getProperties();
   // Stellen Sie den E-Mail-Server ein
   properties.setProperty("mail.smtp.host", host);
   // Erhalten Sie das Standard-Session-Objekt.
   Session mailSession = Session.getDefaultInstance(properties);
   try{
      // Erstellen Sie ein Standard-MimeMessage-Objekt.
      MimeMessage message = new MimeMessage(mailSession);
      // Set From: header field
      message.setFrom(new InternetAddress(from));
      // Set To: header field
      message.addRecipient(Message.RecipientType.TO,
                               new InternetAddress(to));
      // Set Subject: header field
      message.setSubject("This is the Subject Line!");
      // Create message part
      BodyPart messageBodyPart = new MimeBodyPart();
      // Fill message
      messageBodyPart.setText("This is message body");
      
      // Create multimedia message
      Multipart multipart = new MimeMultipart();
      // Set text message part
      multipart.addBodyPart(messageBodyPart);
      // Attachment part
      messageBodyPart = new MimeBodyPart();
      String filename = "file.txt";
      DataSource source = new FileDataSource(filename);
      messageBodyPart.setDataHandler(new DataHandler(source));
      messageBodyPart.setFileName(filename);
      multipart.addBodyPart(messageBodyPart);
      // Send complete message
      message.setContent(multipart);
      // Send message
      Transport.send(message);
      String title = "Send Email";
      result = "Sent message successfully....";
   }catch (MessagingException mex) {
      mex.printStackTrace();
      result = "Error: unable to send message....";
   }
%>
<html>
<head>
<title>Send Attachment Email using JSP</<title>
</<head>
<body>
<center>
<h1>Send Attachement Email using JSP</h1>
</center>
<p align="center">
<% 
   out.println("Ergebnis: " + result + "\n");
%>
</p>
</body>
</html>

Bereich Benutzerauthentifizierung

Wenn der E-Mail-Server Benutzername und Passwort für die Benutzerauthentifizierung benötigt, können Sie wie folgt einstellen:

 properties.setProperty("mail.user", "myuser");
 properties.setProperty("mail.password", "mypwd");

E-Mail senden mit Formular

Empfangen Sie eine E-Mail über ein HTML-Formular und erhalten Sie alle E-Mail-Informationen über das request-Objekt:

String to = request.getParameter("to");
String from = request.getParameter("from");
String subject = request.getParameter("subject");
String messageText = request.getParameter("body");

Nachdem Sie diese Informationen erhalten haben, können Sie die zuvor erwähnten Beispiele verwenden, um E-Mails zu senden.