Bab ini akan mengajari Anda cara menggunakan aplikasi Struts2 untuk mengirim email. Untuk latihan ini, Anda perlu mengunduh dan menginstal Mail.jar dari Javamail API 1.4.4 dan menempatkan file Mail.jar di folder Web-Inflib, dan kemudian terus mengikuti langkah-langkah standar untuk membuat tindakan, tampilan, dan file konfigurasi.
Buat tindakan:
Langkah selanjutnya adalah membuat metode tindakan dan mengirim email. Mari kita buat kelas baru yang disebut emailer.java dengan konten berikut.
Paket com.yiibai.struts2; impor java.util.properties; impor javax.mail.message; impor javax.mail.passwordAuthentication; impor javax.mail.session; import javax.mail.transport; impor javax.mail.ininternet.ininternetoner. com.opensymphony.xwork2.actionsupport; Emailer kelas publik memperluas ActionSupport {private string dari; kata sandi string pribadi; string pribadi ke; subjek string pribadi; tubuh string pribadi; properti statis properti = properti baru (); 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; Coba {session session = session.getDefaultInstance (Properties, new javax.mail.authenticator () {protected passwordAuthentication getPasswordAuthentication () {return New PasswordAuthentication (dari, kata sandi);}}); Pesan pesan = mimemessage baru (sesi); message.setFrom (InternetAddress baru (dari)); message.setrecipients (message.recipienttype.to, internetAddress.parse (to)); pesan.setsubject (subjek); message.setText (body); Transport.send (pesan); } catch (Exception e) {ret = error; e.printstacktrace (); } return ret; } public String getFrom () {return from; } public void setfrom (string from) {this.from = from; } public string getPassword () {return kata sandi; } public void setPassword (kata sandi string) {this.password = kata sandi; } public string getTo () {kembali ke; } public void setto (string to) {this.to = to; } string publik getSubject () {return subjek; } public void setSubject (string subjek) {this.subject = subjek; } public string getBody () {return body; } public void setBody (string body) {this.body = body; } Public Static Properties GetProperties () {Return Properties; } public static void setProperties (Properties Properties) {emailer.properties = Properties; }}Anda dapat melihat bahwa dalam kode sumber di atas, emailer.java memiliki properti yang sesuai dari halaman email.jsp yang diberikan di bawah ini dalam formulir. Sifat -sifat ini
Sudahkah kami mempertimbangkan validasi dari masing -masing atribut di atas, dan validasi akan ditambahkan dalam bab berikutnya. Sekarang mari kita lihat metode execute (). Metode Execute () menggunakan Pustaka Javax Mail untuk mengirim email, menggunakan parameter yang disediakan. Jika pesan dikirim, tindakan mengembalikan kesuksesan, jika tidak ia mengembalikan kesalahan.
Buat Halaman Beranda:
Mari kita tulis file JSP dari indeks halaman beranda.jsp, yang akan digunakan untuk mengumpulkan informasi tentang email, seperti yang disebutkan di atas:
<%@ page language = "java" contentType = "text/html; charset = iso-8859-1" pageEncoding = "iso-8859-1"%> <%@ taglib prefix = "s" uri = "/struts-tags"%html public html public "-// w3c/////////dt1/dtml public html html public"-// w3c//////dt1/dtml public html html public "-//w3c//w3c//dt. "http://www.w3.org/tr/html4/loose.dtd"><html><pead><title> formulir </itement> </head> <em> <em> Formulir di bawah ini menggunakan server SMTP Google. Jadi Anda perlu memasukkan nama pengguna dan kata sandi Gmail </em> <form Action = "emailer" Method = "POST"> <label for = "from"> from </label> <br/> <input type = "text" name = "from"/> <br/> <label untuk = "kata sandi"> </label> <br/ <br/ <br/> <input type = "Name =" NAME " for = "to"> to </label> <br/> <input type = "text" name = "to"/> <br/> <label for = "subjek"> subjek </label> <br/> <input type = "text" name = "subjek"/> <br/> <label untuk = "body"> label </label> <br/> <"" "" " value = "Kirim email"/> </form> </body> </html>
Buat tampilan:
Kami akan menggunakan Success.jsp dari file JSP untuk mengembalikan kesuksesan dalam kasus di mana tindakan dipanggil, tetapi dalam kasus di mana kesalahan terjadi, kami akan memiliki pandangan lain bahwa file dikembalikan dari tindakan tersebut.
<%@ page language = "java" contentType = "text/html; charset = iso-8859-1" pageEncoding = "iso-8859-1"%> <%@ taglib prefix = "s" uri = "/struts-tags"%html public html public "-// w3c/////////dt1/dtml public html html public"-// w3c//////dt1/dtml public html html public "-//w3c//w3c//dt. "http://www.w3.org/tr/html4/loose.dtd"><html><pead><title> Sukses </itement> </head> <body> Email Anda ke <s: nilai properti =" ke "/> telah berhasil dikirim. </sody> </html>
Berikut ini akan berada dalam kasus kesalahan, kembalikan tampilan file error.jsp dari tindakan.
<%@ page language = "java" contentType = "text/html; charset = iso-8859-1" pageEncoding = "iso-8859-1"%> <%@ taglib prefix = "s" uri = "/struts-tags"%html public html public "-// w3c/////////dt1/dtml public html html public"-// w3c//////dt1/dtml public html html public "-//w3c//w3c//dt. "http://www.w3.org/tr/html4/loose.dtd"><html><pead><title> kesalahan </itement> </head> <body> ada masalah pengiriman email Anda ke <s: nilai properti =" to "/>.</ Body> </html>
File Konfigurasi:
Sekarang mari kita gabungkan semua ini dengan file konfigurasi struts.xml sebagai berikut:
<? 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"> <pomputs> <pomputs> "pompa =" packruts = "packruts." packruts. " name = "HelloWorld" Extends = "Struts-Default"> <action name = "emailer" method = "execute"> <result name = "success">/success.jsp </result> <result name = "error">/error.jsp </result> </action> </package> </struts>
Berikut adalah konten dalam file 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/xmlns =" http://java.com/xmlns = "http://java.com/xmlns = 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" Versi = "3.0"> <lay-name> </display-noMe </delay-n-no </pays-n-no </noMe-n-no </noMe-n-noMer> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </tiler-Mapping> </selpap>
Sekarang, klik kanan pada nama proyek dan klik Ekspor> File War untuk membuat file perang. Kemudian sebarkan perang ini di direktori Webapps Tomcat. Akhirnya, mulailah server Tomcat dan cobalah untuk mengakses URL http: // localhost: 8080/helloworldstruts2/index.jsp. Ini memberikan gambaran berikut:
Masukkan informasi yang diperlukan dan klik tombol "Kirim Email". Jika semuanya berjalan dengan baik, Anda akan melihat halaman berikut:
Jika tiga kerangka kerja SSH digunakan bersama, saya akan memberi Anda contoh di sini, tetapi selain kerangka kerja Struts dan Spring, Mail.jar, Activation.jar juga diperlukan.
1) Konfigurasi Bean Pertama di file ApplicationContext.xml
<bean id="mailSender"> <property name="host" value="host"/> <property name="username" value="username"/> <property name="password" value="password"/> </bean><bean id="sendMailAction" singleton="false"> <property name="mailSender"><ref bean="mailSender"/> </property></bean>
2) Menerapkan kode kelas Java untuk mengirim email
JAVAMAILSENDERIMPL MAILSENDER DROTEST; SendMailAction kelas publik memperluas ActionSupport {public void setMailsender (javamailsenderImpl mailsender) {this.mailsender = mailsender;} public void sendmail () melempar pengecualian {1: Email sederhana
JAVAMAILSENDERIMPL MAILSENDER DROTEST; SendMailAction kelas publik memperluas ActionSupport {public void setMailsender (javamailsenderImpl mailsender) {this.mailsender = mailsender;} public void sendmail () melempar pengecualian { 2: Kirim surat HTML
// Buat pesan email, kirim email sederhana dan email html mimemessage mailmessage = senderImpl.createMimeMessage (); MimemessageHelper messageHelper = mimemessageHelper baru (mailmessage); // atur penerima dan pengirim pesanhelper.setto ("[email protected]"); MessageHelper.setFrom ("[email protected]"); MessageHelper.setsubject ("Uji surat html!"); // Pesan True MessageHelper.setText ("<Html> <head> </head> <hody> <h1> halo !! Zhangjian </h1> </body> </html>", true); // Kirim email senderImpl.send (mailmessage);3: Gambar bersarang di email tes ini
// Buat pesan email, kirim email sederhana dan email html mimemessage mailmessage = senderImpl.createMimeMessage (); // Perhatikan bahwa boolean di sini hanya dapat menyarangkan gambar ketika itu benar. Saat membangun MimemessageHelper, nilai yang diberikan benar untuk diaktifkan. Mode multipart mimemessageHelper messageHelper = mimemessageHelper baru (mailmessage, true); // atur penerima, pengirim pesanhelper.setto ("[email protected]"); MessageHelper.setFrom ("[email protected]"); MessageHelper.setsubject ("Gambar bersarang di surat uji !!"); // Benar menunjukkan pesan dalam format html pesanHelper.setText ("<html> <head> </head> <hody> <h1> halo !! zhangjian </h1>" + "<mmg src ="/"mce_src ="/"" cid: aaa/"// </body> <" FileSySystemResource img = FileSySystemResource baru (file baru ("c: /aaa.jpg")); MessageHelper.addinline ("AAA", IMG); // Kirim email senderImpl.send (mailmessage); }}