แม้ว่าการใช้ JSP ในการส่งอีเมลจะง่ายมาก แต่ต้องมีการติดตั้ง JavaMail API และ JavaBean Activation Framework
ดาวน์โหลด JavaMail เวอร์ชันล่าสุดได้ที่นี่
ดาวน์โหลด JavaBeans Activation Framework (JAF) เวอร์ชันล่าสุดได้ที่นี่
ดาวน์โหลดและแตกไฟล์เหล่านี้ในไดเร็กทอรีราก คุณจะเห็นชุดของแพ็คเกจ jar เพิ่มแพ็กเกจ mail.jar และแพ็กเกจ activation.jar ให้กับตัวแปร CLASSPATH
ตัวอย่างนี้แสดงวิธีการส่งอีเมลแบบง่ายจากเครื่องของคุณ ถือว่า localhost เชื่อมต่อกับเครือข่ายและมีความสามารถในการส่งอีเมลได้ ในเวลาเดียวกัน โปรดยืนยันอีกครั้งว่าแพ็กเกจ mail.jar และแพ็กเกจ activation.jar ได้ถูกเพิ่มเข้ากับตัวแปร CLASSPATH แล้ว
<%@ เพจ import="java.io.*,java.util.*,javax.mail.*"%><%@ เพจ import="javax.mail.internet.*,javax.activation.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" %><% String result; // สตริงอีเมลของผู้รับไปที่ = "[email protected]"; // ส่งสตริงอีเมลของผู้ส่งจาก = "[email protected]"; // สมมติว่าคุณกำลังส่งอีเมลจากโฮสต์ภายในเครื่อง String host = "localhost"; // รับคุณสมบัติของออบเจ็กต์ระบบ = System.getProperties(); // ตั้งค่าคุณสมบัติเมลเซิร์ฟเวอร์ ( "mail.smtp.host", โฮสต์); // รับวัตถุเซสชันเริ่มต้น Session mailSession = Session.getDefaultInstance (properties); ลอง { // สร้างวัตถุ MimeMessage เริ่มต้น ข้อความ MimeMessage = new MimeMessage(mailSession); // ตั้งค่าฟิลด์ส่วนหัวของ From: header message.setFrom(new InternetAddress(from)); // ตั้งค่าฟิลด์ส่วนหัวของ To: header message.addRecipient(Message.RecipientType. ถึง InternetAddress ใหม่ (ถึง)); // ตั้งค่าหัวเรื่อง: ฟิลด์ส่วนหัว message.setSubject ("นี่คือบรรทัดหัวเรื่อง!"); ตอนนี้ตั้งค่าข้อความจริง setText("นี่คือข้อความจริง"); // ส่งข้อความ Transport.send(message); result = "ส่งข้อความสำเร็จแล้ว..."; }catch (MessagingException mex) { mex.printStackTrace (); result = "ข้อผิดพลาด: ไม่สามารถส่งข้อความได้..."; } %><html><head><title>ส่งอีเมลโดยใช้ JSP</title></head><body><center><h1>ส่งอีเมลโดยใช้ JSP</h1></center><p align="center"><% out.println("ผลลัพธ์: " + ผลลัพธ์ + "n"); %></p></body></html>
ตอนนี้ไปที่ http://localhost:8080/SendEmail.jsp มันจะส่งอีเมลไปที่ [email protected] และแสดงผลลัพธ์ต่อไปนี้:
ส่งอีเมลโดยใช้ JSPRResult: ส่งข้อความสำเร็จ....หากคุณต้องการส่งอีเมลถึงบุคคลหลายคน คุณสามารถใช้วิธีการด้านล่างเพื่อระบุที่อยู่อีเมลหลายรายการได้:
addRecipients เป็นโมฆะ (ประเภท Message.RecipientType ที่อยู่ [] ที่อยู่) พ่น MessagingExceptionพารามิเตอร์อธิบายไว้ดังนี้:
type: ค่านี้จะถูกตั้งค่าเป็น TO, CC หรือ BCC CC ย่อมาจาก Copy, BCC ย่อมาจาก Black Copy และ TO ใช้ในโปรแกรมตัวอย่าง
ที่อยู่: นี่คืออาร์เรย์ของที่อยู่อีเมล เมื่อระบุที่อยู่อีเมล คุณต้องใช้วิธี InternetAddress()
ตัวอย่างนี้ส่งอีเมล HTML แบบธรรมดา จะถือว่า localhost ของคุณเชื่อมต่อกับเครือข่ายและมีความสามารถในการส่งจดหมาย ในเวลาเดียวกัน โปรดยืนยันอีกครั้งว่าแพ็กเกจ mail.jar และแพ็กเกจ activation.jar ได้ถูกเพิ่มให้กับตัวแปร CLASSPATH แล้ว
ตัวอย่างนี้คล้ายกับตัวอย่างก่อนหน้านี้มาก แต่ในตัวอย่างนี้ เราใช้เมธอด setContent() และส่ง "text/html" เป็นพารามิเตอร์ตัวที่สองเพื่อระบุว่าข้อความมีเนื้อหา HTML
<%@ เพจ import="java.io.*,java.util.*,javax.mail.*"%><%@ เพจ import="javax.mail.internet.*,javax.activation.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" %><% String result; // สตริงอีเมลของผู้รับไปที่ = "[email protected]"; // ส่งสตริงอีเมลของผู้ส่งจาก = "[email protected]"; // สมมติว่าคุณกำลังส่งอีเมลจากโฮสต์ภายในเครื่อง String host = "localhost"; // รับคุณสมบัติของออบเจ็กต์ระบบ = System.getProperties(); // ตั้งค่าคุณสมบัติเมลเซิร์ฟเวอร์ ( "mail.smtp.host", โฮสต์); // รับวัตถุเซสชันเริ่มต้น Session mailSession = Session.getDefaultInstance (properties); ลอง { // สร้างวัตถุ MimeMessage เริ่มต้น ข้อความ MimeMessage = new MimeMessage(mailSession); // ตั้งค่าฟิลด์ส่วนหัวของ From: header message.setFrom(new InternetAddress(from)); // ตั้งค่าฟิลด์ส่วนหัวของ To: header message.addRecipient(Message.RecipientType. ถึง InternetAddress ใหม่ (ถึง)); // ตั้งค่าหัวเรื่อง: ฟิลด์ส่วนหัว message.setSubject ("นี่คือบรรทัดหัวเรื่อง!"); ตั้งค่าข้อความ HTML message.setContent("<h1>นี่คือข้อความจริง</h1>"ข้อความ/html" ); // ส่งข้อความ Transport.send(ข้อความ); result = "ส่งข้อความสำเร็จแล้ว..." ; }catch (MessagingException mex) { mex.printStackTrace(); result = "ข้อผิดพลาด: ไม่สามารถส่งข้อความได้..."; }%><html><head><title>ส่งอีเมล HTML โดยใช้ JSP</title></head><body><center><h1>ส่งอีเมลโดยใช้ JSP</h1></center><p align="center"><% out.println("ผลลัพธ์: " + ผลลัพธ์ + "n"); %></p></body></html>
ตอนนี้คุณสามารถลองใช้ไฟล์ JSP ด้านบนเพื่อส่งข้อความ HTML ไปยังอีเมลได้
ตัวอย่างนี้แสดงวิธีการส่งอีเมลที่มีไฟล์แนบ
<%@ เพจ import="java.io.*,java.util.*,javax.mail.*"%><%@ เพจ import="javax.mail.internet.*,javax.activation.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" %><% String result; // สตริงอีเมลของผู้รับไปที่ = "[email protected]"; // ส่งสตริงอีเมลของผู้ส่งจาก = "[email protected]"; // สมมติว่าคุณกำลังส่งอีเมลจากโฮสต์ภายในเครื่อง String host = "localhost"; // รับคุณสมบัติของออบเจ็กต์ระบบ = System.getProperties(); // ตั้งค่าคุณสมบัติเมลเซิร์ฟเวอร์ ( "mail.smtp.host", โฮสต์); // รับวัตถุเซสชันเริ่มต้น Session mailSession = Session.getDefaultInstance (properties); ลอง { // สร้างวัตถุ MimeMessage เริ่มต้น ข้อความ MimeMessage = new MimeMessage(mailSession); // ตั้งค่าฟิลด์ส่วนหัวของ From: header message.setFrom(new InternetAddress(from)); // ตั้งค่าฟิลด์ส่วนหัวของ To: header message.addRecipient(Message.RecipientType. TO, new InternetAddress(to)); //ตั้งค่าหัวเรื่อง: ฟิลด์ส่วนหัว message.setSubject("นี่คือหัวเรื่อง!"); //สร้างส่วนข้อความ BodyPart messageBodyPart = new MimeBodyPart(); // กรอกข้อความ messageBodyPart.setText("นี่คือเนื้อหาข้อความ"); // สร้างข้อความมัลติมีเดีย Multipart multipart = new MimeMultipart(); messageBodyPart); / / ส่วนไฟล์แนบ messageBodyPart = new MimeBodyPart(); String filename = "file.txt"; new FileDataSource(ชื่อไฟล์); messageBodyPart.setDataHandler(new DataHandler(ที่มา)); messageBodyPart.setFileName(ชื่อไฟล์); multipart.addBodyPart(messageBodyPart); // ส่งข้อความที่สมบูรณ์.setContent(multipart); .send (ข้อความ); String title = "ส่งอีเมล"; result = "ส่งข้อความสำเร็จ..."; (MessagingException mex) { mex.printStackTrace(); result = "ข้อผิดพลาด: ไม่สามารถส่งข้อความ..."; } %><html><head><title>ส่งอีเมลแนบโดยใช้ JSP</title></head <body><center><h1>ส่งอีเมลแนบโดยใช้ JSP</h1></center><p align="center"><% out.println("Result: " + result + "n"); %></p></body></html>
หากเมลเซิร์ฟเวอร์ต้องการชื่อผู้ใช้และรหัสผ่านสำหรับการตรวจสอบสิทธิ์ผู้ใช้ สามารถตั้งค่าได้ดังนี้:
props.setProperty("mail.user", "myuser"); props.setProperty("mail.password", "mypwd");ใช้แบบฟอร์ม HTML เพื่อรับอีเมลและรับข้อมูลอีเมลทั้งหมดผ่านวัตถุคำขอ:
สตริงถึง = request.getParameter("to");สตริงจาก = request.getParameter("from");String subject = request.getParameter("subject");String messageText = request.getParameter("body");เมื่อคุณมีข้อมูลข้างต้นแล้ว คุณสามารถส่งอีเมลโดยใช้ตัวอย่างที่กล่าวถึงข้างต้นได้