Ce chapitre vous apprendra comment utiliser l'application de Struts2 pour envoyer des e-mails. Pour cet exercice, vous devez télécharger et installer Mail.jar à partir de Javamail API 1.4.4 et placer le fichier Mail.jar dans le dossier Web-inflib, puis continuer à suivre les étapes standard pour créer des actions, des vues et des fichiers de configuration.
Créer une action:
L'étape suivante consiste à créer une méthode d'action et à envoyer un e-mail. Créons une nouvelle classe appelée e-mail.java avec le contenu suivant.
Package com.yiibai.struts2; importer java.util.properties; import javax.mail.message; import javax.mail.passwordauthentication; import javax.mail.session; import javax.mail.transport; com.opensymphony.xwork2.ActionSupport; public class e-mail étend ActionSupport {private String from; mot de passe de chaîne privé; chaîne privée à; Sujet de chaîne privée; corps de cordes privées; Propriétés statiques Propriétés = nouvelles propriétés (); 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 = Success; essayez {session session = session.getDefaultInstance (Properties, new Javax.mail.authenticator () {PasswordAuthentication protégé getPasswordAuthentication () {return new PasswordAuthentication (from, passway);}}); Message Message = new MimeMessage (session); Message.setFrom (nouveau InternetAddress (From)); Message.SetRcipients (message.recipentType.to, InternetAddress.Parse (TO)); Message.SetSubject (sujet); Message.seTText (corps); Transport.send (message); } catch (exception e) {ret = error; e.printStackTrace (); } return ret; } public String getFrom () {return de; } public void setFrom (String from) {this.from = from; } public String getPassword () {return mot de passe; } public void setPassword (String Motword) {this.password = mot de passe; } public String getTO () {return to; } public void setTo (String to) {this.to = to; } public String getSubject () {return sujet; } public void setSubject (String Subject) {this.subject = sujet; } public String getBody () {return body; } public void setBody (String body) {this.body = body; } Propriétés statiques publiques getProperties () {Return Properties; } public static void setProperties (Properties Properties) {e-mail.properties = propriétés; }}Vous pouvez voir que dans le code source ci-dessus, E-mail.java a les propriétés correspondantes de la page Email.jsp ci-dessous dans le formulaire. Ces propriétés
Avons-nous envisagé toute validation de chacun des attributs ci-dessus, et la validation sera ajoutée dans le chapitre suivant. Regardons maintenant la méthode EXECUTE (). La méthode EXECUTE () utilise la bibliothèque de courrier Javax pour envoyer un e-mail, en utilisant les paramètres fournis. Si le message est envoyé, l'action renvoie le succès, sinon il renvoie l'erreur.
Créer une page d'accueil:
Écrivons le fichier jsp de la page d'accueil index.jsp, qui sera utilisé pour collecter des informations sur les e-mails, comme mentionné ci-dessus:
<% @ 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> Formulaire d'Email </ title> </ad> <ebody> <em> Le formulaire ci-dessous utilise le serveur SMTP de Google. Vous devez donc saisir un nom d'utilisateur et un mot de passe GMail </em> <form action = "e-mail" méthode = "post"> <label for = "from"> from </ label> <br/> <input type = "text" name = "de" /> <br/> <label for = "passway"> mot de passe </ labe> <br/> <entrée type = "mot de passe" name = "mot de passe" /> <br/> <boul pour = "to"> to </ label> <br/> <input type = "text" name = "to" /> <br/> <label for = "sujet"> sujet </bablow> <br/> <input type = "text" name = "sujet" /> <br/> <label for = "body"> body </ label> <br/> <intrut type = "text" name = "body" /> <brd/> <bry type = "soumettre" name = "body" /> </ form> </body> </html>
Créer une vue:
Nous utiliserons le succès.jsp du fichier jsp pour renvoyer le succès dans le cas où l'action est appelée, mais dans le cas où une erreur se produit, nous aurons une autre vue que le fichier est renvoyé de l'action.
<% @ 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> Success </Title> </ head> <body> Votre e-mail à <s: propriété Value =" to "/> a été envoyé avec succès. </body> </html>
Les éléments suivants seront dans un cas d'erreur, renvoyez le fichier de vue error.jsp à partir de l'action.
<% @ 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> Errreur de la femme </ title> </ head> <body> Il y a un problème qui envoie votre e-mail à <s: propriété value =" to "/>.
Fichier de configuration:
Maintenant, combinons tout cela avec le fichier de configuration de struts.xml comme suit:
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Struts public "- // Apache Software Foundation // Dtd Struts Configuration 2.0 // en" "http://struts.apache.org/dtds/struts-2.0.dtd"> <strutts> <constante nom = "Struts.Devmode" Value = "/> package =" Struts) name = "helloworld" étend = "struts-default"> <action name = "emeller" metheth = "exécuter"> <résultat name = "success"> / success.jsp </sult> <result name = "error"> / error.jsp </cult> </ action> </ package> </ struts>
Voici le contenu du fichier web.xml:
<? xml version = "1.0" Encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: web = "http://java.sun.com/xml/ns/javaee" xmlns: web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" XSI: ScheMalation = "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"> <display> Struts 2 </ Display-Name> <Leloy-File> index.jsp </venke-file> </ welcome-file-list> <filter> <filter-name> struts2 </filter-name> <filter-class> org.apache.struts2.dispatcher.filterdispatcher </ filter-class> </filter> <filter-mappant> <filter-name> Struts2 </filter-name> <url-sattern> / * </ url-stern> </filter-mapping> </ web -pp>
Maintenant, cliquez avec le bouton droit sur le nom du projet et cliquez sur Exporter> Fichier de guerre pour créer un fichier de guerre. Déployez ensuite cette guerre dans le répertoire WebApps de Tomcat. Enfin, démarrez le serveur Tomcat et essayez d'accéder à l'URL http: // localhost: 8080 / helloworldstruts2 / index.jsp. Cela donne l'image suivante:
Entrez les informations requises et cliquez sur le bouton "Envoyer un e-mail". Si tout se passe bien, vous devriez voir la page suivante:
Si les trois cadres SSH sont utilisés ensemble, je vous donnerai un exemple ici, mais en plus des cadres de Struts et Spring, Mail.jar, Activation.jar est également requis.
1) Configurez d'abord le bean dans le fichier applicationContext.xml
<bean id = "MailSender"> <propriété name = "host" value = "host" /> <propriété name = "username" value = "username" /> <propriété name = "mot de passe" value = "mot de passe" /> </ bean> <bean id = "sendmailaction" singleton = "false"> <propriété name = "MailSender"> <RefEple = "MailSender" /> </ Property>
2) Implémentez le code de classe Java pour envoyer des e-mails
JavamailSenderImpl MailSender protégé; la classe publique SendmailAction étend ActionSupport {public void setMailSender (javamailSenderImpl MailSender) {this.mailSender = MailSender;} public void sendmail () lance une exception {1: Email simple
JavamailSenderImpl MailSender protégé; la classe publique SendmailAction étend ActionSupport {public void setMailSender (javamailSenderImpl MailSender) {this.mailSender = MailSender;} public void sendmail () lance une exception { 2: Envoyer un courrier HTML
// Créez des e-mails, envoyez des e-mails simples et des e-mails HTML mimeMessage MailMessage = Senderimpl.CreateMiMEMessage (); MimeMessageHelper MessageHelper = new MimeMessageHelper (MailMessage); // Définissez le destinataire et l'expéditeur messagehelper.setto ("[email protected]"); MessageHelper.setFrom ("[email protected]"); MessageHelper.SetSubject ("Tester HTML Mail!"); // Vrai Message MessageHelper.SetText ("<Html> <A-Head> </Ead> <Body> <H1> Bonjour !! Zhangjian </h1> </body> </html>", true); // Envoyer un e-mail Senderimpl.Send (MailMessage);3: images imbriquées dans cet e-mail de test
// Créez des e-mails, envoyez des e-mails simples et des e-mails HTML mimeMessage MailMessage = Senderimpl.CreateMiMEMessage (); // Notez que le booléen ici ne peut nicher que lorsqu'il est vrai. Lors de la construction de MimeMessageHelper, la valeur donnée est vraie à permettre. MODE MULTIPLE MIMEMESSAGEHELPER MessageHelper = new MimeMessageHelper (MailMessage, true); // Définissez le destinataire, Sender MessageHelper.setto ("[email protected]"); MessageHelper.setFrom ("[email protected]"); MessageHelper.SetSubject ("Images imbriquées dans le courrier de test !!"); // true indique le message dans le format HTML MessageHelper.SeTText ("<Html> <A-head> </ head> <body> <h1> Bonjour !! Zhangjian </h1>" + "<img src =" / "MCE_SRC =" / "" CID: aaa / "// </odody> </html>", true); FileSystemResource img = new FileSystemResource (nouveau fichier ("c: /aaa.jpg")); MessageHelper.Addinline ("AAA", IMG); // Envoyer un e-mail Senderimpl.Send (MailMessage); }}