บทนี้จะสอนวิธีการใช้แอปพลิเคชันของ Struts2 เพื่อส่งอีเมล สำหรับแบบฝึกหัดนี้คุณต้องดาวน์โหลดและติดตั้ง mail.jar จาก Javamail API 1.4.4 และวางไฟล์ mail.jar ในโฟลเดอร์ Web-inflib จากนั้นดำเนินการต่อเพื่อทำตามขั้นตอนมาตรฐานเพื่อสร้างการกระทำมุมมองและไฟล์การกำหนดค่า
สร้างการกระทำ:
ขั้นตอนต่อไปคือการสร้างวิธีการดำเนินการและส่งอีเมล มาสร้างคลาสใหม่ที่เรียกว่า emailer.java ด้วยเนื้อหาต่อไปนี้
แพ็คเกจ com.yiibai.struts2; นำเข้า java.util.properties; นำเข้า Javax.mail.message; นำเข้า Javax.mail.passwordauthentication; นำเข้า Javax.mail.session; นำเข้า Javax.mail.transport; นำเข้า Javax.mail.internet com.opensymphony.xwork2.actionsupport; ผู้ส่งอีเมลระดับสาธารณะขยายการดำเนินการ {สตริงส่วนตัวจาก; รหัสผ่านสตริงส่วนตัว สตริงส่วนตัวถึง; หัวข้อสตริงส่วนตัว ตัวสตริงส่วนตัว; คุณสมบัติคงที่คุณสมบัติ = คุณสมบัติใหม่ (); คงที่ {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"); } String สาธารณะ execute () {string ret = ความสำเร็จ; ลอง {เซสชันเซสชัน = session.getDefaultInstance (คุณสมบัติ, javax.mail.authenticator () {passwordauthentication ใหม่ getPasswordauthentication () {ส่งคืนรหัสผ่านใหม่ (จากรหัสผ่าน);}}); ข้อความข้อความ = new mimeMessage (เซสชัน); Message.setFrom (InternetAddress ใหม่ (จาก)); message.setRecipients (message.recipientType.to, internetaddress.parse (ถึง)); message.setsubject (หัวเรื่อง); message.settext (ร่างกาย); Transport.send (ข้อความ); } catch (ข้อยกเว้น e) {ret = ข้อผิดพลาด; E.PrintStackTrace (); } return ret; } สตริงสาธารณะ getFrom () {return from; } โมฆะสาธารณะ setFrom (สตริงจาก) {this.from = จาก; } สตริงสาธารณะ getPassword () {ส่งคืนรหัสผ่าน; } โมฆะสาธารณะ setPassword (รหัสผ่านสตริง) {this.password = รหัสผ่าน; } สตริงสาธารณะ getto () {กลับไป; } โมฆะสาธารณะ setto (สตริงถึง) {this.to = to; } สตริงสาธารณะ getSubject () {return subject; } โมฆะสาธารณะ setSubject (หัวเรื่องสตริง) {this.subject = หัวเรื่อง; } Public String getBody () {body return; } โมฆะสาธารณะ setbody (ตัวสตริง) {this.body = body; } คุณสมบัติคงที่สาธารณะ getProperties () {คุณสมบัติคืน; } โมฆะคงที่สาธารณะ setProperties (คุณสมบัติคุณสมบัติ) {emailer.properties = คุณสมบัติ; -คุณจะเห็นได้ว่าในซอร์สโค้ดด้านบน Emailer.java มีคุณสมบัติที่สอดคล้องกันของหน้า email.jsp ที่ให้ไว้ด้านล่างในแบบฟอร์ม คุณสมบัติเหล่านี้
เราได้พิจารณาการตรวจสอบความถูกต้องของแต่ละแอตทริบิวต์ข้างต้นและการตรวจสอบจะถูกเพิ่มในบทต่อไป ตอนนี้มาดูวิธีการดำเนินการ () วิธีการดำเนินการ () ใช้ไลบรารีจดหมาย Javax เพื่อส่งอีเมลโดยใช้พารามิเตอร์ที่ให้ไว้ หากส่งข้อความการกระทำจะส่งคืนความสำเร็จไม่เช่นนั้นจะส่งคืนข้อผิดพลาด
สร้างหน้าแรก:
มาเขียนไฟล์ jsp ของโฮมเพจ index.jsp ซึ่งจะใช้ในการรวบรวมข้อมูลเกี่ยวกับอีเมลดังที่ได้กล่าวไว้ข้างต้น:
<%@ page language = "java" contentType = "ข้อความ/html; charset = iso-8859-1" pageencoding = "iso-8859-1"%> <%@ taglib คำนำหน้า = "s" uri = "/struts-tags"%> "http://www.w3.org/tr/html4/loose.dtd"><html> <head> <title> แบบฟอร์ม </title> </head> <body> <em> แบบฟอร์มด้านล่างใช้เซิร์ฟเวอร์ SMTP ของ Google ดังนั้นคุณต้องป้อนชื่อผู้ใช้และรหัสผ่าน Gmail </em> <form action = "emailer" method = "post"> <label for = "from"> จาก </label> <br/> <อินพุตประเภท = "text" name = "จาก"/> <br/> <label for = "รหัสผ่าน" สำหรับ = "ถึง"> ถึง </label> <br/> <อินพุต type = "text" name = "to"/> <br/> <label for = "subject"> หัวเรื่อง </label> <br/> <อินพุตประเภท = "text" name = "subject"/> <br/> <label for = "body"> body </label> </form> </body> </html>
สร้างมุมมอง:
เราจะใช้ Success.jsp ของไฟล์ JSP เพื่อส่งคืนความสำเร็จในกรณีที่มีการเรียกการกระทำ แต่ในกรณีที่เกิดข้อผิดพลาดเราจะมีมุมมองอื่นที่ไฟล์ถูกส่งคืนจากการกระทำ
<%@ page language = "java" contentType = "ข้อความ/html; charset = iso-8859-1" pageencoding = "iso-8859-1"%> <%@ taglib คำนำหน้า = "s" uri = "/struts-tags"%> "http://www.w3.org/tr/html4/loose.dtd"><html> <head> <title> ความสำเร็จของคุณ </title> </head> <body> อีเมลของคุณไปที่ <s: ค่าทรัพย์สิน =" ไปที่ "/>
ต่อไปนี้จะอยู่ในกรณีข้อผิดพลาดให้ส่งคืนข้อผิดพลาดของไฟล์มุมมอง JSP จากการกระทำ
<%@ page language = "java" contentType = "ข้อความ/html; charset = iso-8859-1" pageencoding = "iso-8859-1"%> <%@ taglib คำนำหน้า = "s" uri = "/struts-tags"%> "http://www.w3.org/tr/html4/loose.dtd"><html> <head> <title> ข้อผิดพลาดของคุณ </title> </head> <body> มีปัญหาในการส่งอีเมลของคุณไปที่ <s: ค่าคุณสมบัติ =" ถึง "/>
ไฟล์กำหนดค่า:
ตอนนี้เรามารวมกันทั้งหมดกับไฟล์กำหนดค่าของ struts.xml ดังนี้:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <! doctype struts สาธารณะ "-// Apache ซอฟต์แวร์ Foundation // dtd struts การกำหนดค่า 2.0 // en" "http://struts.apache.org/dtds/struts-2.0.dtd" name = "helloWorld" Extends = "struts-default"> <action name = "emailer" method = "Execute"> <result name = "Success">/success.jsp </result> <result name = "error">/orler.jsp </result> </action> </package>
นี่คือเนื้อหาในไฟล์ web.xml:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml xmlns: web = "http://java.sun.com/xml/ns/javaee" xmlns: web = "http://java.sun.com/xml/ns/javaee/web-app_2_5_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" เวอร์ชัน = "3.0"> <welcome-file> index.jsp </welcome-file> </welcome-file-list> <filter> <filter-name> struts2 </filter-name> <stilter-class> org.apache.struts2.dispatcher.filterdispater </filter-class> </filter> <url-pattern>/*</url-pattern> </ตัวกรอง-แม็ค> </eb-app>
ตอนนี้คลิกขวาที่ชื่อโครงการแล้วคลิกไฟล์ส่งออก> ไฟล์สงครามเพื่อสร้างไฟล์สงคราม จากนั้นปรับใช้สงครามนี้ในไดเรกทอรี WebApps ของ Tomcat ในที่สุดเริ่มเซิร์ฟเวอร์ Tomcat และพยายามเข้าถึง URL http: // localhost: 8080/helloWorldStruts2/index.jsp สิ่งนี้ให้ภาพต่อไปนี้:
ป้อนข้อมูลที่ต้องการและคลิกปุ่ม "ส่งอีเมล" หากทุกอย่างเป็นไปด้วยดีคุณควรเห็นหน้าต่อไปนี้:
หากใช้เฟรมเวิร์กสามเฟรม SSH ร่วมกันฉันจะยกตัวอย่างที่นี่ แต่นอกเหนือจากกรอบของเสาและฤดูใบไม้ผลิ, mail.jar, activation.jar
1) First Configure Bean ในไฟล์ ApplicationContext.xml
<bean id = "mailsender"> <property name = "host" value = "host"/> <property name = "ชื่อผู้ใช้" value = "ชื่อผู้ใช้"/> <property name = "รหัสผ่าน" value = "รหัสผ่าน"/> </bean> <bean id = "sendMailAction"
2) ใช้รหัสคลาส Java สำหรับการส่งอีเมล
ได้รับการป้องกัน JavamailsenderImpl Mailsender; SendMailAction ระดับสาธารณะขยายการกระทำ {โมฆะสาธารณะ setMailsender (JavamailSenderImpl mailsender) {this.mailsender = mailsender;} โมฆะสาธารณะ sendmail () โยนข้อยกเว้น {1: อีเมลง่ายๆ
ได้รับการป้องกัน JavamailsenderImpl Mailsender; SendMailAction ระดับสาธารณะขยายการกระทำ {โมฆะสาธารณะ setMailsender (JavamailSenderImpl mailsender) {this.mailsender = mailsender;} โมฆะสาธารณะ sendmail () โยนข้อยกเว้น { 2: ส่งจดหมาย html
// สร้างข้อความอีเมลส่งอีเมลง่าย ๆ และอีเมล HTML MIMEMESSAGE MAILMESSAGE = SENDERIMPL.CREATEMIMESSAGE (); MimemessageHelper MessageHelper = ใหม่ mimemessageHelper (mailMessage); // ตั้งค่าผู้รับและผู้ส่ง MessageHelper.setto ("[email protected]"); MessageHelper.SetFrom ("[email protected]"); MessageHelper.SetSubject ("ทดสอบ HTML Mail!"); // ข้อความจริง messagehelper.settext ("<html> <head> </head> <body> <h1> สวัสดี !! Zhangjian </h1> </body> </html>" จริง); // ส่งอีเมล SenderImpl.Send (MailMessage);3: รูปภาพซ้อนในอีเมลทดสอบนี้
// สร้างข้อความอีเมลส่งอีเมลง่าย ๆ และอีเมล HTML MIMEMESSAGE MAILMESSAGE = SENDERIMPL.CREATEMIMESSAGE (); // โปรดทราบว่าบูลีนที่นี่สามารถทำรังได้เฉพาะเมื่อมันเป็นจริง เมื่อสร้าง mimemessagehelper ค่าที่กำหนดจะเป็นจริงที่จะเปิดใช้งาน Multipart Mode MimemessageHelper MessageHelper = ใหม่ mimeMessageHelper (MailMessage, TRUE); // ตั้งค่าผู้รับ, ผู้ส่ง MessageHelper.setto ("[email protected]"); MessageHelper.SetFrom ("[email protected]"); MessageHelper.SetSubject ("ภาพซ้อนกันในจดหมายทดสอบ !!"); // จริงระบุข้อความในรูปแบบ html messagehelper.settext ("<html> <head> </head> <body> <h1> สวัสดี !! Zhangjian </h1>" + "<img src ="/"mce_src ="/"" filesystemresource img = ใหม่ filesystemresource (ไฟล์ใหม่ ("c: /aaa.jpg")); MessageHelper.addinline ("AAA", IMG); // ส่งอีเมล SenderImpl.Send (MailMessage); -