การดาวน์โหลดและอัปโหลดไฟล์แนบการส่งข้อความและการส่งอีเมลล้วนเป็นฟังก์ชั่นที่ใช้กันทั่วไปในโปรแกรม ฉันบันทึกการอัปโหลดและดาวน์โหลดไฟล์และส่งข้อความ เนื่องจากฉันไม่ว่างเมื่อเร็ว ๆ นี้ฉันไม่มีเวลาทำฟังก์ชั่นการส่งอีเมล ตอนนี้ฉันได้ส่งอีเมลไปยังอีเมล QQ พร้อมกล่องจดหมาย 163 กล่องแล้ว ต่อไปนี้เป็นรหัสที่เกี่ยวข้อง สำหรับรายละเอียดโปรดดูความคิดเห็นในรหัส:
การทดสอบแพ็คเกจ; นำเข้า java.util.arraylist; นำเข้า java.util.date; นำเข้า java.util.list; นำเข้า java.util.properties; นำเข้า java.util.regex.matcher; นำเข้า java.util.regex.pattern; นำเข้า Javax.mail.address; นำเข้า Javax.mail.authenticator; นำเข้า Javax.mail.bodypart; นำเข้า Javax.mail.message; นำเข้า javax.mail.passwordauthentication; นำเข้า Javax.mail.session; นำเข้า Javax.mail.transport; นำเข้า javax.mail.internet.internetaddress; นำเข้า javax.mail.internet.mimebodypart; นำเข้า javax.mail.internet.mimemessage; นำเข้า javax.mail.internet.mimemultipart; นำเข้า com.sun.mail.util.mailsslsocketfactory; /// */ * // * @author tuzongxun123 // * @description mail ส่งคลาสทดสอบ // */คลาสสาธารณะ sendmailtest {โมฆะคงที่สาธารณะหลัก (สตริง [] args) โยนข้อยกเว้น {// คุณสมบัติข้อมูลการกำหนดค่า Pro = คุณสมบัติใหม่ (); pro.put ("mail.smtp.host", "smtp.163.com"); pro.put ("mail.smtp.auth", "true"); // SSL การเข้ารหัส mailsSlSocketFactory sf = null; sf = new mailsslsocketfactory (); // ตั้งความน่าเชื่อถือโฮสต์ทั้งหมด sf.setTrustAllHosts (จริง); pro.put ("mail.smtp.ssl.enable", "true"); pro.put ("mail.smtp.ssl.socketfactory", sf); // สร้างเซสชันสำหรับการส่งอีเมลตามคุณสมบัติเซสชันของอีเมล ควรสังเกตที่นี่ว่าชื่อผู้ใช้ไม่สามารถต่อท้ายได้มิฉะนั้นจะไม่เป็นชื่อผู้ใช้ // ควรสังเกตว่ารหัสผ่านที่นี่ไม่ใช่รหัสผ่านเข้าสู่ระบบของกล่องจดหมายตามปกติ แต่รหัสการอนุญาตพิเศษอื่นที่สร้างขึ้นโดยไคลเอนต์ MailAuthenticator Authorizer = MailAuthenticator ใหม่ ("Tuzongxun123", "รหัสการอนุญาตลูกค้า"); เซสชันเซสชัน = เซสชัน GetInstance (Pro, Authorizer); // สร้างข้อมูลอีเมลตามข้อความเซสชัน = ใหม่ mimeMessage (เซสชัน); // สร้างที่อยู่ผู้ส่งอีเมลจาก = ใหม่ InternetAddress ("[email protected]"); // ตั้งค่าผู้ส่งข้อความอีเมล SetFrom (จาก); // ตรวจสอบรายการที่อยู่อีเมลของผู้รับ <String> toAdDressList = new ArrayList <> (); toaddresslist.add ("[email protected]"); StringBuffer buffer = new StringBuffer (); if (! toaddresslist.isempty ()) {string regex = "^([a-z0-9a-z]+[-| //.]?)+[a-z0-9a-z]@(a-z0-9a-z]+(-[a-z0-9a-z]+) รูปแบบ p = pattern.compile (regex); สำหรับ (int i = 0; i <toaddresslist.size (); i ++) {matcher match = p.matcher (toaddresslist.get.get (i)); if (match.matches ()) {buffer.append (toaddresslist.get (i)); if (i <toaddresslist.size () - 1) {buffer.append (","); }}}}} สตริง toaddress = buffer.toString (); if (! toaddress.isempty ()) {// สร้างที่อยู่ผู้รับของที่อยู่ข้อความ [] ถึง = internetaddress.parse (toaddress); // ตั้งค่าข้อความที่อยู่ผู้รับอีเมล SetRecipients (message.recipientType.to, เป็น); // อีเมลเรื่อง // message.setsubject ("การทดสอบจดหมาย Java"); message.setSubject ("ทำไมผิด"); // อีเมลคอนเทนเนอร์ mimeMultipart mimeMultipart = ใหม่ mimemultipart (); // ตั้งค่า html bodypart bodypart = new mimebodypart (); // เนื้อหาจดหมาย // สตริง htmltext = "การทดสอบอีเมล Java 111"; สตริง htmltext = "ทำไมมันผิด"; bodypart.setContent (htmltext, "text/html; charset = utf-8"); mimemultipart.addbodypart (bodypart); // เพิ่มรายการสิ่งที่แนบมา <string> fileaddresslist = new ArrayList <String> (); fileaddresslist .add ("c: // ผู้ใช้ // tuzongxun123 // เดสก์ท็อป // ใหม่ Microsoft Office Document.docx"); if (fileaddresslist! = null) {bodypart attachpart = null; สำหรับ (int i = 0; i <fileaddresslist.size (); i ++) {ถ้า (! fileaddresslist.get.get (i) .isempty ()) {atthedPart = new MimeBodyPart (); // แหล่งข้อมูลที่แนบมาแหล่งข้อมูลแหล่งข้อมูล = ใหม่ fileDataSource (fileaddresslist.get (i)); // เพิ่มแหล่งข้อมูลไฟล์แนบไปยัง Mail Body AttachPart.SetDatahandler (ใหม่ Datahandler (แหล่งที่มา)); // ตั้งค่าชื่อไฟล์แนบเป็นชื่อไฟล์ต้นฉบับ ataintPart.SetFilEname (mimeutility.encodetext (แหล่งที่มา. getName ())); mimemultipart.addbodypart (attchpart); }}} message.setContent (MIMEMULTIPART); message.setSentDate (วันที่ใหม่ ()); // บันทึกข้อความอีเมล Savechanges (); // ส่งอีเมล transport.send (ข้อความ); }}} คลาส mailauthenticator ขยาย Authenticator { / *** ชื่อผู้ใช้* / ชื่อผู้ใช้สตริงส่วนตัว; / *** รหัสผ่าน*/ รหัสผ่านสตริงส่วนตัว; /*** สร้างอินสแตนซ์ mailauthenticator ใหม่ * * @param ชื่อผู้ใช้ * @param รหัสผ่าน */ public mailauthenticator (ชื่อผู้ใช้สตริง, รหัสผ่านสตริง) {this.username = ชื่อผู้ใช้; this.password = รหัสผ่าน; } สตริงสาธารณะ getPassword () {ส่งคืนรหัสผ่าน; } @Override PreventAtaITHENTICATION GETPASSWORDAUTHENTICATION () {ส่งคืนรหัสผ่านใหม่ (ชื่อผู้ใช้รหัสผ่าน); } สตริงสาธารณะ getUserName () {ส่งคืนชื่อผู้ใช้; } โมฆะสาธารณะ setPassword (รหัสผ่านสตริง) {this.password = รหัสผ่าน; } โมฆะสาธารณะ setUserName (ชื่อผู้ใช้สตริง) {this.userName = ชื่อผู้ใช้; -หมายเหตุ: เพื่อนร่วมงานของฉันใช้รหัสของฉันเพื่อแทนที่ด้วยบัญชีและรหัสการอนุญาตลูกค้าของเขา เขารายงานข้อผิดพลาดทันทีที่เขาวิ่ง จากนั้นเขารีเซ็ตรหัสการอนุญาตลูกค้าของที่อยู่อีเมลและข้อผิดพลาดก็หายไป
ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้ฉันหวังว่ามันจะเป็นประโยชน์สำหรับทุกคนในการเรียนรู้การเขียนโปรแกรม Java