In diesem Kapitel werden Sie vermittelt, wie Sie die Bewerbung von Struts2 zum Senden von E -Mails verwenden. Für diese Übung müssen Sie mail.jar von Javamail API 1.4.4 herunterladen und installieren und die mail.jar-Datei in den Web-InfliB-Ordner platzieren und weiterhin die Standardschritte befolgen, um Aktionen, Ansichten und Konfigurationsdateien zu erstellen.
Erstellen Sie eine Aktion:
Der nächste Schritt besteht darin, eine Aktionsmethode zu erstellen und eine E -Mail zu senden. Erstellen wir eine neue Klasse namens Emaler.java mit den folgenden Inhalten.
Paket com.yiibai.struts2; import Java.util.Properties; Import Javax.mail.Message; Import Javax.Mail.PasswordAuthentication; Import Javax.mail com.opensymphony.xwork2.actionsupport; öffentlicher Klasse E -Mailer erweitert die AktionSupport {private Zeichenfolge aus; privates Zeichenfolgenkennwort; private Zeichenfolge an; privates String -Betreff; private Saitenkörper; statische Eigenschaften Eigenschaften = neue Eigenschaften (); static {Properties.put ("mail.smtp.host", "SMTP.gmail.com"); Properties.put ("mail.smtp.socketfactory.port", "465"); Properties.put ("mail.smtp.socketfactory.class", "javax.net.ssl.sslsocketfactory"); Properties.put ("mail.smtp.auth", "true"); Properties.put ("mail.smtp.port", "465"); } public String execute () {String ret = Erfolg; try {session session = session.getDefaultInstance (Eigenschaften, new javax.mail.authenticator () {Protected PasswordAuthentication getPasswordAuthentication () {Neue PasswordAuthentication zurückgeben (von, Passwort);}}); Message Message = New Mimemessage (Sitzung); Message.SetFrom (neue InternetAtaddress (aus)); message.setRecipients (Message.RecipientType.to, InternetAddress.Parse (to)); Message.Setsubject (Betreff); message.setText (Körper); Transport.Send (Nachricht); } catch (Ausnahme e) {ret = error; E. printstacktrace (); } return ret; } public String getfrom () {return from; } public void setfrom (String von) {this.from = from; } public String getPassword () {Kennwort zurückgeben; } public void setPassword (String -Passwort) {this.password = password; } public String getto () {return to; } public void setto (String to) {this.to = to; } public String getUntject () {return thema; } public void setSubject (String -Subjekt) {this.subject = Subjekt; } public String getBody () {return body; } public void setbody (String body) {this.body = body; } öffentliche statische Eigenschaften getProperties () {returneigenschaften; } public static void setProperties (Eigenschaften Eigenschaften) {Emamer.Properties = Eigenschaften; }}Sie können sehen, dass Emailer.java im obigen Quellcode die entsprechenden Eigenschaften der unten angegebenen E -Mail.jsp -Seite im Formular enthält. Diese Eigenschaften
Haben wir jede der oben genannten Attribute in Betracht gezogen, und die Validierung wird im nächsten Kapitel hinzugefügt. Schauen wir uns nun die methode execute () an. Die Methode execute () verwendet die Javax -Mail -Bibliothek, um eine E -Mail mit den bereitgestellten Parametern zu senden. Wenn die Nachricht gesendet wird, gibt die Aktion den Erfolg zurück, andernfalls gibt sie Fehler zurück.
Erstellen Sie eine Startseite:
Schreiben wir die JSP -Datei der Homepage Index.jsp, mit der Informationen zu E -Mails gesammelt werden, wie oben erwähnt:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"><html><Head><Title> EMail -Formular </title> </head> <body> <em> Das folgende Formular verwendet den SMTP -Server von Google. So you need to enter a gmail username and password </em> <form action="emailer" method="post"> <label for="from">From</label><br/> <input type="text" name="from"/><br/> <label for="password">Password</label><br/> <input type="password" name="password"/><br/> <label für = "zu"> zu </label> <br/> <Eingabe type = "text" name = "zu"/> <br/> <label für = "subjekt"> Betreff </label> <br/> <Eingabe type = "text" name = "subjekt"/> <br/> <label für = "body"> body </label> <br/ <eingabetyps ". </form> </body> </html>
Erstellen Sie eine Ansicht:
Wir werden den Success.jsp der JSP -Datei verwenden, um den Erfolg in dem Fall zurückzugeben, in dem die Aktion aufgerufen wird, aber für den Fall, in dem Fehler auftreten, haben wir eine weitere Ansicht, dass die Datei aus der Aktion zurückgegeben wird.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"><html><Head><Title> EMAIL ERFOLGERN </title> </head> <body> Ihre E -Mail an <s: Eigenschaft value =" to "/> wurde erfolgreich gesendet. </body> </html>
Im Folgenden findet in einem Fehlerfall der Ansichtsdatei -Fehler.jsp aus der Aktion zurück.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"><html><Head><Title> EMail -Fehler </title> </head> <body> Es gibt ein Problem mit dem Senden Ihrer E -Mail an <s: Property Value =" an "/>.</ body> </html>
Konfigurationsdatei:
Lassen Sie uns nun all dies mit der Konfigurationsdatei von Struts.xml wie folgt kombinieren:
<? name = "helloWorld" Extends = "Struts-Default"> <action name = "E-Mailer" methode = "execute"> <result name = "scurn">/scurn.jsp </result> <result name = "error">/erromfsters.jsp </result> </action> </package
Hier ist der Inhalt in der Datei web.xml:
<? xmlns: web = "http://java.sun.com/xml/ns/javaee" xmlns: web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" XSI: Schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id = "webapp_id Version =" 3.0 "3.0" --NAME> </display-name> struts 2 </dielly-name "--file- <Welcome-File> Index.jsp </Welcome-File> </Welcome-Filter-List> <filter> <Filter-Name> Struts2 </Filter-Name> <Filter-Klasse> org.apache.struts2.Dispatcher.filterDispatcher </filter-class> </Filter> <Filter-Mapping> <Filter-Mapping> </filter-mapping> </filter-mapping> </filter-mapping> </filter-mapping> </filter-mapping <URL-Muster>/*</url-pattern> </filter-mapping> </web-App>
Klicken Sie nun mit der rechten Maustaste auf den Projektnamen und klicken Sie auf Export> Kriegsdatei, um eine Kriegsdatei zu erstellen. Stellen Sie diesen Krieg dann im WebApps -Verzeichnis von Tomcat ein. Starten Sie schließlich den Tomcat -Server und versuchen Sie, auf die URL http: // localhost: 8080/helloWorldstruts2/index.jsp zuzugreifen. Dies gibt das folgende Bild:
Geben Sie die erforderlichen Informationen ein und klicken Sie auf die Schaltfläche "E -Mail senden". Wenn alles gut geht, sollten Sie die folgende Seite sehen:
Wenn die drei SSH -Frameworks zusammen verwendet werden, gebe ich Ihnen hier ein Beispiel, aber zusätzlich zu den Frameworks von Streben und Spring, Mail.jar, Activation.jar ist ebenfalls erforderlich.
1) Konfigurieren Sie zuerst Bean in der Datei applicationContext.xml
<bean id = "mailSender"> <Eigenschaft name = "host" value = "host"/> <Eigenschaft name = "userername" value = "username"/> <Eigenschaft name = "password" value = "password"/> </bean> <bean id = "sendmailaction" Singleton = "false"> </property = "mailsender"> </a -mailSender "
2) Implementieren Sie den Java -Klassencode zum Senden von E -Mails
geschützte JavamailSenderImpl MailSender; öffentliche Klasse Sendmailaction erweitert die Aktionsversorgung {public void setmailsender (JavamailSenderImpl MailSender) {this.mailsender = mailsender;} public void sendmail () löscht Ausnahme {Ausnahme {1: Einfache E -Mail
geschützte JavamailSenderImpl MailSender; öffentliche Klasse Sendmailaction erweitert die Aktionsversorgung {public void setmailsender (JavamailSenderImpl MailSender) {this.mailsender = mailsender;} public void sendmail () löscht Ausnahme {Ausnahme { 2: HTML Mail senden
// E -Mail -Nachrichten erstellen, einfache E -Mails und HTML -E -Mails miMemessage mailMessage = senderImpl.createMiMememessage () senden; MimemessageHelper messageHelper = new mimemessageHelper (MailMessage); // Setzen Sie den Empfänger und den Absender MessageHelper.setto ("[email protected]"); messageHelper.setfrom ("[email protected]"); MessageHelper.setsubject ("Testen Sie HTML Mail!"); // True Message messageHelper.setText ("<html> <head> </head> <body> <h1> Hallo !! Zhangjian </h1> </body> </html>", wahr); // E -Mail -SenderImpl.Send (MailMessage) senden;3: verschachtelte Bilder in dieser Test -E -Mail
// E -Mail -Nachrichten erstellen, einfache E -Mails und HTML -E -Mails miMemessage mailMessage = senderImpl.createMiMememessage () senden; // Beachten Sie, dass der Boolesche hier nur Bilder nisten kann, wenn es wahr ist. Beim Bauen von MimemessageHelper ist der angegebene Wert wahr. Multipart -Modus MimemessageHelper messageHelper = new mimemessageHelper (mailMessage, true); // Setzen Sie den Empfänger, Absender MessageHelper.setto ("[email protected]"); messageHelper.setfrom ("[email protected]"); MessageHelper.setsubject ("verschachtelte Bilder in Testpost !!"); // true zeigt die Nachricht in HTML -Format messageHelper.setText ("<html> <pead> </head> <body> <h1> Hallo !! Zhangjian </h1>" + "<img src ="/"MCE_SRC ="/"CID: aaa/" // // </body> </"</body> </body> </body> </body> </body>". DateiSystemResource img = new FileSystemResource (neue Datei ("c: /aaa.jpg"); MessageHelper.addinline ("AAA", IMG); // E -Mail -SenderImpl.Send (MailMessage) senden; }}