Este capítulo le enseñará cómo usar la aplicación de Struts2 para enviar correos electrónicos. Para este ejercicio, debe descargar e instalar Mail.jar desde Javamail API 1.4.4 y colocar el archivo Mail.jar en la carpeta de INFLIB WEB, y luego continuar siguiendo los pasos estándar para crear acciones, vistas y archivos de configuración.
Crear una acción:
El siguiente paso es crear un método de acción y enviar un correo electrónico. Creemos una nueva clase llamada correo electrónico.java con el siguiente contenido.
paquete com.yiibai.struts2; import java.util.properties; import javax.mail.message; import javax.mail.passwordAuthentication; import javax.mail.session; import javax.mail.transport; import javax.mail.internet.internetaddress; import javax.mail. com.opensymphony.xwork2.ActionSupport; Public Class Eorma de correo electrónico extiende ActionSupport {String privado desde; contraseña de cadena privada; cadena privada a; sujeto de cadena privada; cuerpo de cuerda privada; Propiedades estáticas Propiedades = New Properties (); 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", "verdadero"); Properties.put ("mail.smtp.port", "465"); } public String Execute () {String Ret = Success; Pruebe {session session = session.getDefaultInstance (Properties, new javax.mail.authenticator () {protegido PassingAuthentication getPassPassWalderAuthentication () {return New PasswordAuthentication (de, contraseña);}}); Mensaje mensaje = new Mimemessage (sesión); Message.setFrom (nuevo Internetaddress (desde)); Message.setRecipients (Message.RecipientType.to, Internetaddress.parse (a)); Message.setsubject (sujeto); Message.settext (cuerpo); Transport.send (mensaje); } capt (excepción e) {ret = error; E.PrintStackTrace (); } return ret; } public String getFrom () {return de; } public void setFrom (string from) {this.from = from; } public String getPassword () {return Password; } public void setPassword (String Password) {this.password = contraseña; } public String getTo () {return to; } public void setTo (cadena a) {this.to = a; } public String getSubject () {return Sujem; } public void setSubject (string stem) {this.subject = saters; } public String getBody () {Body de retorno; } public void setBody (string body) {this.body = body; } Propiedades estáticas públicas getProperties () {propiedad de retorno; } public static void setProperties (propiedades de propiedades) {correo electrónico.properties = propiedadies; }}Puede ver que en el código fuente anterior, correo electrónico.java tiene las propiedades correspondientes de la página email.jsp que se proporciona a continuación en el formulario. Estas propiedades
¿Hemos considerado alguna validación de cada uno de los atributos anteriores, y la validación se agregará en el próximo capítulo? Ahora veamos el método Execute (). El método Execute () utiliza la biblioteca Javax Mail para enviar un correo electrónico, utilizando los parámetros proporcionados. Si el mensaje se envía, la acción devuelve el éxito, de lo contrario devuelve el error.
Crea una página de inicio:
Escribamos el archivo JSP de la página de inicio index.jsp, que se utilizará para recopilar información sobre los correos electrónicos, como se mencionó anteriormente:
<%@ page lenguaje = "java" contentType = "text/html; charset = iso-88859-1" PageEncoding = "ISO-8859-1"%> <%@ taglib prefix = "s" uri = "/struts-tags"%> < "http://www.w3.org/tr/html4/loose.dtd"><html><head><Title>Mail Form </title> </head> <body> <em> El siguiente formulario utiliza el servidor SMTP de 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 for="to">To</label><br/> <input type="text" name="to"/><br/> <label for="subject">Subject</label><br/> <input type="text" name="subject"/><br/> <label for="body">Body</label><br/> <input type="text" name="body"/><br/> <input type="submit" value="Send Correo electrónico "/> </form> </body> </html>
Crear una vista:
Usaremos el strace.jsp del archivo jsp para devolver el éxito en el caso de que se llame la acción, pero en el caso de que ocurra el error, tendremos otra visión de que el archivo se devuelve de la acción.
<%@ page lenguaje = "java" contentType = "text/html; charset = iso-88859-1" PageEncoding = "ISO-8859-1"%> <%@ taglib prefix = "s" uri = "/struts-tags"%> < "http://www.w3.org/tr/html4/loose.dtd"><html><head><title>Mail exitoso </title> </head> <body> su correo electrónico a <s: valor de propiedad =" a "/> se envió con éxito. </body> </html>
El siguiente estará en un caso de error, devuelva el error de vista de archivo.jsp de la acción.
<%@ page lenguaje = "java" contentType = "text/html; charset = iso-88859-1" PageEncoding = "ISO-8859-1"%> <%@ taglib prefix = "s" uri = "/struts-tags"%> < "http://www.w3.org/tr/html4/loose.dtd"><html><head><title> error de correo electrónico </title> </head> <body> Existe un problema para enviar su correo electrónico a <s: Property valor =" a "/>.</ cuerpo> </html>
Archivo de configuración:
Ahora combinemos todo esto con el archivo de configuración de Struts.xml de la siguiente manera:
<? xml versión = "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.dtdd"> <truts> <stitant name = "struts.devmode" oal " name = "HelloWorld" Extends = "Struts-Default"> <Action Name = "Correo electrónico" Method = "Execute"> <Result Name = "Success">/Success.jsp </resultado> <resultado name = "Error">/error.jsp </ resultado> </action> </paquete> </struts>
Aquí está el contenido en el archivo web.xml:
<? xml versión = "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: 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"> <psippision-name> Struts 2 </visual <velceed-file> index.jsp </sedle Welcome-File> </Welcome-File-List> <Strofle> <Sterry-name> Struts2 </filter-Name> <Sterry-Class> org.apache.struts2.dispatcher.filterDispatcher </filter-class> </filter> <filter-mapping> <filter-name> struts2 </filtre-name> <Url-patn>/*</filtre> <filter-mapping> <filter-name> struts2 </filter-name> <Url-patn>/*<//filter> <filter-mapping> <filter-name> struts2 </filter-name> <Url-patn>/*</ull-pattern-pattern-pattern-pattern-pattern-patter </filter-mapping> </web-app>
Ahora, haga clic con el botón derecho en el nombre del proyecto y haga clic en Exportar> archivo de guerra para crear un archivo de guerra. Luego implementa esta guerra en el directorio webapps de Tomcat. Finalmente, inicie el servidor Tomcat e intente acceder a la URL http: // localhost: 8080/helloworldstruts2/index.jsp. Esto da la siguiente imagen:
Ingrese la información requerida y haga clic en el botón "Enviar correo electrónico". Si todo va bien, debería ver la siguiente página:
Si los tres marcos SSH se usan juntos, le daré un ejemplo aquí, pero además de los marcos de Struts y Spring, Mail.Jar, Activation.Jar también se requiere.
1) Primero configure Bean en el archivo ApplicationContext.xml
<bean id = "mailsender"> <propiedad name = "host" value = "host"/> <propiedad name = "username" value = "username"/> <propiedad name = "contraseña" value = "contraseña"/> </bean> <bean id = "sendmailaction" singleton = "false"> <name de propiedad = "mailsender"> <refle bean = "silsender"/> </propiedad> </</beay> </bean "
2) Implemente el código de clase Java para enviar correos electrónicos
JavamailsenderImpl protegido Mailsender; clase pública sendmailaction extiende accionesPport {public void setmailsender (javamailsenderImpl mailsender) {this.mailsender = mailsender;} public void sendmail () arroja excepción {1: correo electrónico simple
JavamailsenderImpl protegido Mailsender; clase pública sendmailaction extiende accionesPport {public void setmailsender (javamailsenderImpl mailsender) {this.mailsender = mailsender;} public void sendmail () arroja excepción { 2: Enviar correo HTML
// Crear mensajes de correo electrónico, enviar correos electrónicos simples y correos electrónicos HTML Mimemessage MailMessage = SenderImpl.CreateMeMessage (); MimemessageHelper MessageHelper = new MimemessageHelper (MailMessage); // establecer el destinatario y el remitente MessageHelper.setto ("[email protected]"); MessageHelper.setFrom ("[email protected]"); MessageHelper.SetSubject ("¡Pruebe el correo html!"); // Message Verdadero MessageHelper.Settext ("<html> <head> </head> <body> <h1> hola !! zhangjian </h1> </body> </html>", true); // Enviar correo electrónico SenderImpl.send (MailMessage);3: Fotos anidadas en este correo electrónico de prueba
// Crear mensajes de correo electrónico, enviar correos electrónicos simples y correos electrónicos HTML Mimemessage MailMessage = SenderImpl.CreateMeMessage (); // Tenga en cuenta que el booleano aquí solo puede anidar imágenes cuando es verdad. Al construir MimemessageHelper, el valor dado es cierto para habilitar. Modo multipart mimemessageHelper MessageHelper = new MimemessageHelper (MailMessage, verdadero); // establecer el destinatario, remitente MessageHelper.setto ("[email protected]"); MessageHelper.setFrom ("[email protected]"); MessageHelper.SetSubject ("Imágenes anidadas en el correo de prueba !!"); // Verdadero indica el mensaje en formato html MessageHelper.setText ("<html> <fead> </head> <body> <h1> Hola !! Zhangjian </h1>" + "<img src ="/"mce_src ="/"" cid: aaa/"// </body> </html>", verdadero); FilesystemResource img = new FilesystemResource (nuevo archivo ("c: /aaa.jpg")); MessageHelper.addinline ("AAA", img); // Enviar correo electrónico SenderImpl.send (MailMessage); }}