Spring Mail ห่อหุ้มบริการจดหมายของ Javamail ทำให้ใช้บริการเมลได้ง่ายขึ้น ใช้ตัวอย่างเซิร์ฟเวอร์กล่องจดหมาย QQ และใช้บริการ Spring Mail เพื่อส่งอีเมล
กำหนดค่ากล่องจดหมาย QQ "การตั้งค่า" - "บัญชี" เปิดบริการ SMTP และสร้างรหัสการอนุญาต
การสร้างรหัสการอนุญาตต้องมีการตรวจสอบโทรศัพท์มือถือ ถัดไปคุณสามารถใช้บัญชีอีเมล QQ และรหัสการอนุญาตเพื่อส่งอีเมลและไม่จำเป็นต้องใช้รหัสผ่าน QQ
บริการ Spring Mail ได้รับการกำหนดค่าใน Spring-Context-Support จากนั้นคุณสามารถส่งอีเมลด้วยเซิร์ฟเวอร์การส่งที่จัดทำโดยกล่องจดหมาย QQ
<Serpendency> <sdermId> javax.mail </groupId> <ratifactid> Mail </artifactid> <version> 1.4.7 </เวอร์ชัน> </serpendency> <pendency> <roupid> org.springframework </groupid>
จดหมายข้อความปกติ
การทดสอบครั้งแรกคือจดหมายข้อความปกติ
แพ็คเกจ com.xmyself.mail; นำเข้า org.springframework.mail.simpleMailMessage นำเข้า org.springframework.mail.javamail.javamailsenderimpl; คลาสสาธารณะหลัก {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {javamailsenderimpl mailsender = Javamailsenderimpl ใหม่ (); mailsender.sethost ("smtp.qq.com"); mailsender.setport (587); mailsender.setusername ("[email protected]"); mailsender.setPassword ("dsruklozelxcbdba"); // รหัสการอนุญาต SimpleMailMessage Mail = ใหม่ SimpleMailMessage (); mail.setto ("[email protected]"); mail.setFrom ("[email protected]"); mail.setSubject ("ทดสอบจดหมาย"); mail.settext ("Test Mail Content"); Mailsender.Send (Mail); System.out.println ("ความสำเร็จ"); -เรียกใช้และส่งอีเมล หมายเหตุ: รหัสการอนุญาตไม่ใช่รหัสผ่านพอร์ตไม่ใช่ 25 แต่ 587
ถัดไปให้ Mailsender ไม่เปลี่ยนแปลงแก้ไขประเภทจดหมายและส่งข้อความจดหมายที่หลากหลาย
จดหมาย html ง่าย ๆ
ปล่อยให้เนื้อหาอีเมลแสดงในรูปแบบ HTML เพียงแค่แก้ไขดังนี้
mimemessage mail = mailsender.createMimeMessage (); mimeMessageHelper helper = mimemessageHelper ใหม่ (Mail, true); // true ใช้เพื่อเปิดโหมด multipart และเพิ่มรูปภาพหรือไฟล์แนบ helper.setto ("[email protected]"); helper.setfrom ("[email protected]"); helper.setsubject ("จดหมายทดสอบ"); helper.settext ("<html> "</body> </html>" จริง);ยังคงส่งอีเมลนี้โดยใช้ Mailsender
Mailsender.Send (Mail);
HTML Mail พร้อมรูปภาพ
แทรกการแสดงภาพในเนื้อหา HTML ของอีเมลแก้ไขเนื้อหาข้อความ
helper.settext ("<html> <head> </head> <body>" + "<h1> สวัสดี !! Mail html Spring </h1>" + "<img src =/" cid: image/"/>" + "</body> </html>" ไฟล์ ("d: /test.jpg")); helper.addinline ("รูปภาพ", ภาพ); HTML Mail พร้อมไฟล์แนบ
เพิ่มไฟล์แนบไปยังอีเมลเนื้อหาข้อความยังคงไม่เปลี่ยนแปลงเพียงแค่แก้ไขดังนี้
helper.settext ("<html> <head> </head> <body>" + "<h1> สวัสดี !! mail html ฤดูใบไม้ผลิ </h1>" + "</body> </html>", true); filesystemresource image = ใหม่ อีเมลเทมเพลต Freemarker
เนื้อหา HTML มักจะรวยมากและมันยุ่งเกินไปที่จะเขียนโดยตรงในเมธอด setText () ดังนั้น HTML ควรได้รับการจัดการแยกกันเป็นไฟล์จากนั้นใช้เครื่องมือเพื่อแปลงเนื้อหาเป็นสตริงเป็นพารามิเตอร์ของ setText () ต่อไปนี้เป็นเอ็นจิ้นเทมเพลต freemarker เป็นตัวอย่าง
สร้างไดเรกทอรีเทมเพลตใหม่ในไดเรกทอรีโครงการ SRC/Main/Resources และวางไฟล์ test.ftl เนื้อหามีดังนี้
<html> <head> </head> <body> <p> เทมเพลตทดสอบ freemarker ยินดีต้อนรับ $ {ชื่อผู้ใช้} </p> <img src = "CID: image"/> </body> </html>จากนั้นใช้เครื่องมือที่จัดทำโดย Freemarker และ Spring เพื่อแปลงเนื้อหาเป็นสตริงซึ่งแน่นอนว่าต้องอาศัยขวดใหม่
<การพึ่งพา> <roupId> org.freeMarker </groupId> <ratifactId> freemarker </artifactid> <version> 2.3.23 </version> </deperency>
สร้าง freemarkerparser.java ใหม่
แพ็คเกจ com.xmyself.mail; นำเข้า java.util.map; นำเข้า org.springframework.ui.freemarker.freeMarkertemplateutils; นำเข้า freemarker.template.configuration; นำเข้า freemarker.template.template; คลาสสาธารณะ FreemarkerParser {สตริงสาธารณะ tohtmlString (ชื่อสตริง, แผนที่ <สตริง, สตริง> ข้อมูล) {@SuppressWarnings ("การเสื่อมราคา") การกำหนดค่าการกำหนดค่า = การกำหนดค่าใหม่ (); config.setclassfortemplateLoading (this.getClass (), "/templates/"); ลอง {เทมเพลตเทมเพลต = config.getTemplate (ชื่อ); ส่งคืน freemarkertemplateutils.processTemplateIntostring (เทมเพลต, ข้อมูล); } catch (exception e) {e.printstacktrace (); } return "Fail"; -แทนที่เนื้อหา $ {} ในเทมเพลตด้วยค่าในแผนที่แปลงไฟล์เทมเพลตเป็นสตริงสตริง
หมายเหตุ: การกำหนดค่าและการอ่านเส้นทางเทมเพลตในระหว่างกระบวนการมีปัญหาและได้รับการจัดการชั่วคราวด้วยวิธีนี้
รหัสในการส่งอีเมลต้องมีการเปลี่ยนแปลงเพียงเล็กน้อยเท่านั้น
แผนที่ <string, string> data = new hashmap <string, string> (); data.put ("ชื่อผู้ใช้", "Chengyi"); String text = new freemarkerParser (). tohtmlstring ("test.ftl", ข้อมูล); helper.settext (text, true); filesystemresource image = new filesystemresource (ไฟล์ใหม่ ("d: /test.jpg")); helper.addinline ("รูปภาพ", ภาพ);ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น