การส่งและการยืนยันผู้ใช้หลายครั้ง
ต่อไปนี้จะแนะนำวิธีส่งอีเมลไปยังผู้รับหลายคนและวิธีการใช้วัตถุ Authenticators เพื่อให้ได้การตรวจสอบผู้ใช้
เมื่อระบุผู้รับเราสามารถมีสองวิธีในการระบุ บล็อกก่อนหน้านี้ระบุผู้รับชั่วคราวเมื่อส่งอีเมลและสามารถระบุได้ในวัตถุข้อความ
message.addrecipient (message.recipientType.to, InternetAddress ใหม่ ("[email protected]")); นี่เป็นเพียงการส่งไปยังผู้รับหนึ่งคน แต่จะจัดการกับผู้รับหลายรายได้อย่างไร? นอกจากนี้ยังมีสองวิธีในการจัดการกับมัน
1. เมื่อส่งอีเมลวิธีการขนส่ง sendMessage () ใช้อาร์เรย์เพื่อระบุผู้รับ ในเวลานี้เราต้องเพิ่มที่อยู่ของผู้รับมากขึ้นเพื่อให้เสร็จสมบูรณ์
2. เมื่อใช้วัตถุข้อความเพื่อเพิ่มผู้รับเราสามารถใช้วิธีการแยกวิเคราะห์ (สตริงสตริง) ของวัตถุ InternetAddress วิธีนี้ส่งคืนอาร์เรย์ InternetAddress ซึ่งสามารถส่งไปยังผู้รับหลายคน
เรารู้ว่าเมื่อพัฒนา Javamail เราต้องทำการตรวจสอบการอนุญาต วัตถุประสงค์ของการตรวจสอบการอนุญาตคือเพื่อป้องกันไม่ให้ผู้อื่นส่งอีเมลโดยพลการและลดการสร้างสแปม
เราสามารถตรวจสอบเมื่อได้รับวัตถุเซสชัน มีสองวิธีในวัตถุเซสชัน:
ทั้งสองวิธีมีพารามิเตอร์ Authenticator ทั่วไปซึ่งเป็นวัตถุ Authenticator วัตถุ Authenticator ช่วยให้ผู้ใช้สามารถตรวจสอบข้อมูลและตรวจสอบการอนุญาตที่สมบูรณ์ มีวิธี getPasswordauthentication () ในวัตถุ Authenticator วิธีนี้ส่งคืนวัตถุรหัสผ่าน มีสองวิธีในวัตถุ PasswordAuthentication: getPassword () และ getUserName () นั่นหมายความว่าเราห่อหุ้มรหัสผ่านและชื่อผู้ใช้ในวัตถุ PasswordAuthentication ด้วยวิธีการทั้งสองนี้เราสามารถรับชื่อผู้ใช้และรหัสผ่านได้ การตรวจสอบข้อมูลผู้ใช้สามารถเสร็จสิ้นได้
ตัวอย่างมีดังนี้:
คลาสสาธารณะ Javamail_02 {โมฆะคงที่สาธารณะหลัก (String [] args) โยนข้อยกเว้น {properties props = คุณสมบัติใหม่ (); props.setProperty ("mail.smtp.auth", "true"); props.setProperty ("mail.transport.protocol", "smtp"); props.setProperty ("mail.host", "smtp.163.com"); เซสชั่นเซสชัน = เซสชัน. getInstance (อุปกรณ์ประกอบฉาก, Authenticator ใหม่ () {passwordered PasswordAuthentication getPasswordauthentication () {ส่งคืนรหัสผ่านใหม่ ("******", "*********");}}); session.setDebug (จริง); ข้อความ MSG = ใหม่ mimeMessage (เซสชัน); MSG.SETFROM (InternetAddress ใหม่ ("[email protected]")); msg.setsubject ("โปรแกรมทดสอบ Javamail ... "); msg.setContent ("<span style = 'สี: สีแดง'> นี่คือโปรแกรมทดสอบ Javamail ครั้งที่สองของฉัน .... </span>", "ข้อความ/html; charset = gbk"); //msg.setRecipients(recipientType.to, ที่อยู่ใหม่ [] {ใหม่ InternetAddress ("1111 @@ qq.com"), InternetAddress ใหม่ ("[email protected]")}); msg.setRecipients (ผู้รับ Tetype.to, internetaddress.parse ("[email protected], [email protected]")); Transport.send (MSG); - อีเมลพร้อมรูปภาพและไฟล์แนบ
ในอีเมลจริงเรามักจะเกี่ยวข้องกับโครงสร้างอีเมลที่ซับซ้อนมากขึ้นเช่นไฟล์แนบรูปภาพเพลง ฯลฯ ในเวลานี้เราต้องมีความเข้าใจที่ชัดเจนเกี่ยวกับโครงสร้างของอีเมล ก่อนที่จะพัฒนาอีเมลคอมโพสิตคุณต้องมีความเข้าใจบางอย่างเกี่ยวกับโครงสร้างของอีเมลคอมโพสิต
ภาพด้านบนแสดงโครงสร้างโดยรวมของอีเมลคอมโพสิตและเราจะเห็นว่าอีเมลที่ซับซ้อนประกอบด้วยหลายส่วน มันมีส่วนหัวและร่างกาย แต่ร่างกายไม่ง่ายเหมือนเดิม แต่ประกอบด้วยหลายส่วน หัวจำเป็นต้องทำหน้าที่เป็นตัวบ่งชี้ซึ่งจำเป็นต้องอธิบายว่าตัวคั่นชนิดใดที่จะใช้ในการแยกข้อความและความสัมพันธ์แบบผสมผสานระหว่างส่วนของข้อความ สำหรับอีเมลข้างต้นประกอบด้วยสามส่วนแต่ละส่วนมีหัวและร่างกายของตัวเองและส่วนแรกก็ประกอบด้วยสองส่วน
ความสัมพันธ์แบบผสมผสานของอีเมลคอมโพสิต:
มีชุดค่าผสมระหว่างชิ้นส่วนข้อความหลักมากมาย ความสัมพันธ์แบบผสมมีดังนี้:
ทางเลือก: เลือกความสัมพันธ์ ข้อความธรรมดาข้างต้นและไฮเปอร์เท็กซ์เป็นความสัมพันธ์ทางเลือก
ที่เกี่ยวข้อง: ความสัมพันธ์ในเครือ หากข้อความ Hypertext ด้านบนแสดงรูปภาพจากนั้นเมื่อเราส่งอีเมลเราจะต้องรวมรูปภาพไว้ในอีเมลซึ่งเป็นทรัพยากรฝังตัวที่เรียกว่าซึ่งเป็นไฮเปอร์เท็กซ์ ดังนั้นจึงมีความสัมพันธ์ระหว่างสองคน
ผสม: ความสัมพันธ์แบบผสม ข้อความธรรมดาไฮเปอร์เท็กซ์และทรัพยากรที่ฝังอยู่นั้นรวมกันและพวกเขาจะถูกวางด้วยสิ่งที่แนบมาและมีความสัมพันธ์ที่หลากหลายระหว่างทั้งสอง
API สำหรับโครงสร้างองค์กรคอมโพสิตจดหมาย:
คลาส mimemessage แสดงถึงอีเมลทั้งหมด
คลาส MimeBodyPart แสดงถึงข้อความ MIME ของอีเมล
คลาส mimemultipart แสดงถึงข้อความ MIME รวมที่ประกอบด้วยข้อความ MIME หลายข้อความ
ตัวอย่างต่อไปนี้: อีเมลมีสองไฟล์แนบส่วนหลักประกอบด้วยข้อความธรรมดาและไฮเปอร์เท็กซ์และไฮเปอร์เท็กซ์หมายถึงการแสดงรูปภาพ ซอร์สโค้ดมีดังนี้:
คลาสสาธารณะ Javamail_03 {โมฆะคงที่สาธารณะหลัก (String [] args) โยนข้อยกเว้น {properties props = คุณสมบัติใหม่ (); props.setProperty ("mail.smtp.auth", "true"); props.setProperty ("mail.transport.protocol", "smtp"); props.setProperty ("mail.host", "smtp.163.com"); เซสชั่นเซสชัน = เซสชัน. getInstance (อุปกรณ์ประกอบฉาก, Authenticator ใหม่ () {passwordered PasswordAuthentication getPasswordauthentication () {ส่งคืนรหัสผ่านใหม่ ("***", "******");}}); ข้อความข้อความ = new mimeMessage (เซสชัน); message.setsubject ("โปรแกรมทดสอบ Javamail ที่สาม"); Message.setFrom (InternetAddress ใหม่ ("/" "+mimeutility.encodetext (" Chen Ming ")+"/"<[email protected]>")); message.setRecipients (ผู้รับ TECONTYPE.TO, ที่อยู่ใหม่ [] {ใหม่ InternetAddress ("[email protected]")}); // จดหมายข้อความ mimeMultipart multipart = new mimemultipart ("Mixed"); message.setContent (multipart); /** เนื้อหาของข้อความ* รวมเนื้อหาอีเมลหนึ่งตัวและไฟล์แนบสองรายการ*/ mimeBodyPart content = new MimeBodyPart (); // จดหมายเนื้อหา mimebodypart attach1 = new mimebodypart (); // เอกสารแนบ 1 mimebodypart attach2 = new mimebodypart (); // ไฟล์แนบ 2 // เพิ่มเนื้อหาอีเมลไปยัง multipart multipart.addbodypart (เนื้อหา); multipart.addbodypart (Attch1); multipart.addbodypart (Attch2); // ตั้งค่าไฟล์แนบ 1 DataSource DS1 = New FileDataSource ("G: // ebook // oracle password.txt"); Datahandler DH1 = ใหม่ Datahandler (DS1); attach1.SetDatahandler (DH1); แนบ 1.SetFilename ("oracle.txt"); // ตั้งค่าไฟล์แนบ 2 DataSource DS2 = New FileDataSource ("G: //ebook//account.txt"); Datahandler DH2 = ใหม่ Datahandler (DS2); Attach2.SetDatahandler (DH2); แนบ 2.setFilename (mimeutility.encodetext ("account.txt")); /** ตั้งค่าเนื้อหา (ข้อความ) ---- เป็นร่างกายที่ซับซ้อน* รวมถึงข้อความ HTML และการแสดงภาพ*/ mimeMultipart bodyMultipart = new MIMEMULTIPART ("เกี่ยวข้อง"); content.setContent (bodyMultipart); // สร้างข้อความ mimebodypart htmlbody = ใหม่ mimebodypart (); mimebodypart gifbody = new mimebodypart (); bodymultipart.addbodypart (htmlbody); bodymultipart.addbodypart (gifbody); // ตั้งค่าข้อมูล dataSource gifds = new filedataSource ("f: //picture//picture//4.jpg"); Datahandler gifdh = ใหม่ datahandler (gifds); gifbody.setDatahandler (gifdh); gifbody.setheader ("content-id", "<"+gifds.getName ()+">"); //gifbody.setheader("content-location "," http://www.itcast.cn/logo.gif "); // ตั้งค่า html body htmlbody.setContent ("<span style = 'สี: สีแดง; ตัวอักษรขนาด: 16px'> นี่คือการทดสอบ Javamail ครั้งที่สามของฉัน! มันมีสิ่งที่แนบมาและรูปภาพซึ่งค่อนข้างซับซ้อน ... </span> <br>" + " message.savechanges (); // สร้างการขนส่งทางอีเมลส่ง (ข้อความ); -