ในการใช้งานจริงตัวอย่างเช่นหากคุณซื้อสินค้าใน Taobao และขอเงินคืนคุณจะเห็นอีเมลคืนเงินในที่อยู่อีเมลของคุณหรือคุณลงทะเบียนบัญชีสมัครขอยืนยันการแจ้งเตือนทางอีเมล ฯลฯ เหล่านี้ทั้งหมดส่งอีเมลทั้งหมด ที่นี่จะแนะนำกรณีของการส่งอีเมลที่ผิดปกติโดยระบบ
การตระเตรียม:
Eclipse4.5 64 บิต
JDK1.7 64 บิต
โถที่จำเป็นในการส่งจดหมาย:
fastjson-1.1.24.jar, javax.mail-1.5.6.jar
ผู้พัฒนาชั้นเรียน:
ประเภทการแจงนับชื่อผู้ส่งและที่อยู่อีเมล
แพคเกจเมล; / ** *@class: นักพัฒนา *@descript: ประเภทการแจกแจงชื่อผู้ส่งและที่อยู่อีเมล *@วันที่: 26 ตุลาคม 2016 เวลา 8:07:50 PM *@ผู้แต่ง Sanghaiqin *@เวอร์ชัน: v1.0 */ นักพัฒนา enum สาธารณะ {Zhoujing ("Zhou Jing", "405687038 yuxiang "," [email protected] "), yipeng (" ypeng "," [email protected] "), liuan (" liu an "," [email protected]), Chenyuhao ( Dong "," [email protected] "), Sanghaiqin (" Sang Haiqin "," [email protected] "); // ชื่อผู้ส่งชื่อสตริงส่วนตัว; // ผู้ส่งอีเมลสตริงส่วนตัว; Private Developer () {} นักพัฒนาส่วนตัว (ชื่อสตริง, สตริงเมล) {this.name = name; this.mail = mail; } / *** @descript: ส่งชื่อผู้ส่งเพื่อรับอีเมลของผู้ส่ง* @param ชื่อผู้ส่งชื่อ* @return* / สตริงคงที่สาธารณะ getMail (ชื่อสตริง) {สำหรับ (นักพัฒนา C: นักพัฒนา }} return null; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } Public String getMail () {return mail; } โมฆะสาธารณะ setMail (จดหมายสตริง) {this.mail = mail; - Class ExceptionInfo: ข้อมูลผู้ส่ง
แพคเกจเมล; /** *@class: ExceptionInfo *@descript: ข้อมูลผู้ส่ง *@วันที่: 26 ตุลาคม 2016 เวลา 8:11:27 PM *@Author Sanghaiqin *@เวอร์ชัน: v1.0 */คลาสสาธารณะ ExceptionInfo {// ชื่อผู้ส่งสตริงส่วนตัว // วิธีผู้ส่งวิธีสตริงส่วนตัว; // ผู้ส่ง URL url สตริงส่วนตัว; // ผู้ส่งข้อมูลข้อยกเว้นข้อยกเว้นส่วนตัว e; / *** @param นักพัฒนาชื่อผู้ส่งชื่อ* @param เมธอดผู้ส่งเมธอด* @param url url ผู้ส่ง url* @param e ผู้ส่งข้อมูลข้อยกเว้น*/ public exceptionInfo (String Developer, String Method, String url, Exception E) {super (); this.developer = นักพัฒนา; this.method = วิธีการ; this.url = url; this.e = e; } Public String getDeveloper () {return Developer; } โมฆะสาธารณะ setDeveloper (นักพัฒนาสตริง) {this.developer = นักพัฒนา; } สตริงสาธารณะ getMethod () {วิธีการส่งคืน; } โมฆะสาธารณะ setMethod (วิธีการสตริง) {this.method = วิธี; } สตริงสาธารณะ getUrl () {return url; } โมฆะสาธารณะ setUrl (rl String) {this.url = url; } ข้อยกเว้นสาธารณะ gete () {return e; } โมฆะสาธารณะ sete (Exception e) {this.e = e; - MailsenderInfo: ส่งข้อมูลอีเมล
แพคเกจเมล; นำเข้า java.util.properties; /** *@class: MailsenderInfo *@Descript: ส่งข้อมูลอีเมล *@วันที่: 26 ตุลาคม 2016 เวลา 8:14:22 PM *@Author Sanghaiqin *@เวอร์ชัน: v1.0 */mailsenderinfo คลาสสาธารณะ // พอร์ตของเซิร์ฟเวอร์ที่ส่งจดหมายคือ 25 สตริงส่วนตัว MailServerPort = "25"; // ที่อยู่ของผู้ส่งสตริงส่วนตัวจากจดหมายจากที่ผ่านมา; // ที่อยู่ของผู้รับจดหมายส่วนตัว // เข้าสู่ระบบชื่อผู้ใช้ชื่อผู้ใช้ส่วนตัวของเซิร์ฟเวอร์ Sending Mail // ลงชื่อเข้าใช้รหัสผ่านสตริงส่วนตัวของเซิร์ฟเวอร์การส่งเมล // คุณต้องการการตรวจสอบความถูกต้องของบูลีนส่วนตัวตรวจสอบความถูกต้อง = false; // อีเมลหัวเรื่องส่วนตัวเรื่องสตริง; // เนื้อหาข้อความของเนื้อหาสตริงส่วนตัวจดหมาย; // ชื่อไฟล์ของสตริงส่วนตัวที่แนบมาจดหมาย [] attachFilenames; MailsenderInfo () {super (); } สตริงสาธารณะ getMailServerHost () {return mailServerHost; } โมฆะสาธารณะ setMailServerHost (String MailServerHost) {this.mailServerHost = MailServerHost; } สตริงสาธารณะ getMailServerPort () {return mailServerPort; } โมฆะสาธารณะ setMailServerPort (สตริง MailServerPort) {this.mailServerport = MailServerPort; } บูลีนสาธารณะ isValidate () {return ตรวจสอบ; } โมฆะสาธารณะ setValidate (การตรวจสอบบูลีน) {this.validate = ตรวจสอบ; } สตริงสาธารณะ [] getattachfilenames () {return attachfilenames; } โมฆะสาธารณะ setattachfilenames (สตริง [] ชื่อไฟล์) {this.attachfilenames = ชื่อไฟล์; } สตริงสาธารณะ getFromaddress () {return fromaddress; } โมฆะสาธารณะ setFromAddress (สตริง FromAddress) {this.fromaddress = fromAddress; } สตริงสาธารณะ getPassword () {ส่งคืนรหัสผ่าน; } โมฆะสาธารณะ setPassword (รหัสผ่านสตริง) {this.password = รหัสผ่าน; } สตริงสาธารณะ getToaddress () {return toaddress; } โมฆะสาธารณะ setToaddress (String toaddress) {this.toaddress = toaddress; } สตริงสาธารณะ getUserName () {ส่งคืนชื่อผู้ใช้; } โมฆะสาธารณะ setUserName (ชื่อผู้ใช้สตริง) {this.userName = ชื่อผู้ใช้; } สตริงสาธารณะ getSubject () {return subject; } โมฆะสาธารณะ setSubject (หัวเรื่องสตริง) {this.subject = หัวเรื่อง; } สตริงสาธารณะ getContent () {return content; } โมฆะสาธารณะ setContent (String textContent) {this.content = textContent; } / *** @descript: รับคุณสมบัติเซสชันอีเมล* @return* / คุณสมบัติสาธารณะ getProperties () {PropertyUtil PropertyUtil = new PropertyUtil (); คุณสมบัติคุณสมบัติ = propertyUtil.readProperties (); คุณสมบัติกลับ; - คลาส myauthenticator: ผู้ใช้ Authenticator
แพคเกจเมล; นำเข้า Javax.mail.authenticator; นำเข้า javax.mail.passwordauthentication; /** *@class: myauthenticator *@descript: การตรวจสอบผู้ใช้ *@วันที่: 26 ตุลาคม 2016 เวลา 8:57:45 น. *@ผู้แต่ง Sanghaiqin *@เวอร์ชัน: v1.0 */คลาสสาธารณะ Myauthenticator ขยาย Authenticator // รหัสผ่านสตริงรหัสผ่าน = null; สาธารณะ myauthenticator () {} myauthenticator สาธารณะ (ชื่อผู้ใช้สตริง, รหัสผ่านสตริง) {this.username = ชื่อผู้ใช้; this.password = รหัสผ่าน; } passwardauthentication getPasswordauthentication () {ส่งคืนรหัสผ่านใหม่ (ชื่อผู้ใช้รหัสผ่าน); - คลาส PropertyUtil: รับ Properties File Tool Class
แพคเกจเมล; นำเข้า Java.io.FileInputStream; นำเข้า java.io.filenotfoundException; นำเข้า java.io.ioException; นำเข้า Java.io.InputStream; นำเข้า java.util.properties; / ** *@class: PropertyUtil * @descript: รับ Properties File Tool Class * @วันที่: 26 ตุลาคม 2016 เวลา 8:20:10 PM * @Author Sanghaiqin * @เวอร์ชัน: v1.0 */ คลาสสาธารณะ PropertyUtil {/ ** *@descript inputStream inputStream = null; คุณสมบัติคุณสมบัติ = คุณสมบัติใหม่ (); // ใช้ InputStream เพื่อรับไฟล์ทรัพยากรลอง {inputStream = new FileInputStream (ทรัพยากร); // โหลดคุณสมบัติไฟล์การกำหนดค่าโหลด (inputStream); } catch (filenotfoundException e) {e.printStackTrace (); } catch (ioexception e) {e.printstacktrace (); } ในที่สุด {if (inputStream! = null) {ลอง {inputStream.close (); } catch (ioexception e) {e.printstacktrace (); }} คุณสมบัติการส่งคืน; } / ** * @descript: อ่านไฟล์คุณสมบัติ * @return * @throws filenotfoundException * / คุณสมบัติสาธารณะ readproperties () {String Resources = PropertyUtil.class.getClassLoader (). getResource ("prop.properties"). getPath (); คุณสมบัติคุณสมบัติ = loadproperties (ทรัพยากร); คุณสมบัติกลับ; } / *** @descript: ทดสอบ* @param args* / โมฆะคงที่สาธารณะหลัก (สตริง [] args) {propertyUtil p = new PropertyUtil (); คุณสมบัติ PRO = P.ReadProperties (); String MailsenderUserName = (String) Pro.get ("Mail.Sender.userName"); System.out.println ("ผู้ส่งอีเมลชื่อผู้ใช้:"+mailsenderusername); // [email protected] String Path = PropertyUtil.class.getClassloader (). getResource ("prop.properties"). getPath (); System.out.println (path); // /g:/workspaces4.4/test/bin/prop.properties}} ไฟล์ทรัพยากร pro.properties:
- - #อีเมลที่อยู่อีเมลของผู้ส่ง. [email protected]
คลาส Javamail: ส่งกล่องจดหมาย
แพคเกจเมล; นำเข้า java.io.printwriter; นำเข้า java.io.stringWriter; นำเข้า java.io.unsupportencodingexception; นำเข้า java.net.inetaddress; นำเข้า java.net.unknownhostexception; นำเข้า java.util.date; นำเข้า java.util.properties; นำเข้า Javax.activation.datahandler; นำเข้า Javax.activation.datasource; นำเข้า Javax.activation.filedatasource; นำเข้า Javax.mail.address; นำเข้า Javax javax.mail.bodypart; นำเข้า Javax.mail.message; นำเข้า Javax.mail.messagingException; นำเข้า Javax.mail.multipart; นำเข้า Javax.mail.session; นำเข้า Javax.mail.transport; นำเข้า javax.mail.internet.internetaddress; นำเข้า javax.mail.internet.mimebodypart; นำเข้า javax.mail.internet.mimemessage; นำเข้า javax.mail.internet.mimemultipart; นำเข้า Javax.mail.internet.mimeutility; / ** *@class: javamail *@descript: แพ็คเกจ jar จำเป็นต้องส่งกล่องจดหมายข้อมูล *: *fastjson-1.1.24.jar *javax.mail-1.5.6.jar *@วันที่: 26 ตุลาคม 2016 เวลา 8:13:05 น. {// รับอีเมลของผู้ส่งผ่านสตริงผู้ส่ง Mail = Developer.getMail (info.getDeveloper ()); if (mail! = null) {mailsenderInfo mailInfo = new MailsenderInfo (); // ตั้งค่าเนื้อหาข้อความของอีเมล mailinfo.setContent ("รับผิดชอบ:"+info.getDeveloper ()+"==> เซิร์ฟเวอร์ IP:"+inetAddress.getLocalHost (). getHostaddress ()+"==> ชื่อวิธี:" info.getMethod ()+"==> "+getEmessage (info.gete ())); // ตั้งค่าที่อยู่ของผู้รับอีเมล MailInfo.Settoaddress (อีเมล); // อีเมลหัวเรื่อง mailinfo.setsubject ("การแจ้งเตือนข้อยกเว้น Yika Aitu"); // ส่งอีเมล SendTextMail (MailInfo); }} catch (unknownhostexception e) {e.printstacktrace (); }} /*** @descript: ส่งอีเมลในรูปแบบข้อความ* @param: ข้อมูล MailInfo ของอีเมลที่จะส่ง* @return: ส่งจริงหลังจากการส่งสำเร็จ; ส่งคืนเท็จหลังจากความล้มเหลว */ บูลีนสแตติกสาธารณะ sendtextmail (mailsenderInfo mailInfo) {// ตรวจสอบว่าจำเป็นต้องมีการรับรองความถูกต้องของตัวตน Myauthenticator Authenticator = null; Properties Pro = MailInfo.getProperties (); ลอง {if ("true" .Trim (). Equals (pro.getProperty ("mail.smtp.auth"))) {// ถ้าจำเป็นต้องมีการตรวจสอบสิทธิ์ให้สร้าง Authenticator Authenticator รหัสผ่าน = myauthenticator (pro.getProperty } // สร้างเซสชันเพื่อส่งจดหมายตามคุณสมบัติเซสชันเมตรและรหัสผ่าน Authenticator เซสชัน SendMailSession = Session.getDefaultInstance (Pro, Authenticator); // สร้างข้อความจดหมายตามข้อความเซสชัน MEASTMESEGE = ใหม่ MIMEMESSAGE (SENDMAILSESSION); // สร้างผู้ส่งที่อยู่ข้อความจดหมายจาก = new InternetAddress (pro.getProperty ("mail.sender.address")); // ตั้งค่าผู้ส่งข้อความจดหมาย MailMessage.SetFrom (จาก); // สร้างที่อยู่ผู้รับของข้อความจดหมายและตั้งค่าเป็นที่อยู่ข้อความจดหมายเป็น = new InternetAddress (mailInfo.getToaddress ()); // message.recipientType.to แอตทริบิวต์ระบุว่าประเภทของผู้รับคือ mailMessage.setRecipient (message.recipientType.to, ถึง); // ตั้งค่าหัวเรื่องของข้อความ Mailmessage.setsubject (mailinfo.getSubject ()); // ตั้งค่าเวลาสำหรับการส่งข้อความจดหมาย MailMessage.SetSentDate (วันที่ใหม่ ()); // ตั้งค่าเนื้อหาหลักของ Mails Mext MailMessage.settext (MailInfo.getContent ()); // ส่งจดหมายส่งจดหมาย (MailMessage); กลับมาจริง; } catch (messagingException ex) {ex.printStackTrace (); } return false; } /** * @descript: ส่งอีเมลในรูปแบบ html * @param mailinfo: ข้อมูลของจดหมายที่จะส่ง * @param attatedment: เนื้อหาแนบ * @return: จริงเมื่อส่งสำเร็จ; FALSE เมื่อล้มเหลว */ บูลีนคงที่สาธารณะ SENDHTMLMAIL (MailSenderInfo MailInfo, String [] ไฟล์แนบ) {// ตรวจสอบว่าจำเป็นต้องมีการรับรองความถูกต้องของตัวตนว่า myauthenticator Authenticator = null; Properties Pro = MailInfo.getProperties (); ลอง {// ถ้าจำเป็นต้องมีการรับรองความถูกต้องของตัวตนให้สร้างตัวตรวจสอบรหัสผ่าน IF ("true" .Trim (). equals (pro.getProperty ("mail.smtp.auth"))) {// หากจำเป็นต้องมีการตรวจสอบตัวตน myauthenticator (pro.getProperty ("mail.sender.username"), pro.getProperty ("mail.sender.password")); } // สร้างเซสชันเพื่อส่งจดหมายตามคุณสมบัติเซสชันเมตรและ Authenticator รหัสผ่าน เซสชัน sendmailsession = session.getDefaultInstance (Pro, Authenticator); // สร้างข้อความจดหมายตามข้อความเซสชัน MEASTMESEGE = ใหม่ MIMEMESSAGE (SENDMAILSESSION); // สร้างที่อยู่ผู้ส่งอีเมลจาก = new InternetAddress (pro.getProperty ("mail.sender.address")); // ตั้งค่าผู้ส่งข้อความจดหมาย MailMessage.SetFrom (จาก); // สร้างที่อยู่ผู้รับของข้อความจดหมายและตั้งค่าเป็นที่อยู่ข้อความจดหมายเป็น = new InternetAddress (mailInfo.getToaddress ()); // message.recipientType.to แอตทริบิวต์ระบุว่าประเภทของผู้รับคือ mailMessage.setRecipient (message.recipientType.to, ถึง); // ตั้งค่าหัวเรื่องของข้อความ Mailmessage.setsubject (mailinfo.getSubject ()); // ตั้งค่าเวลาสำหรับการส่งข้อความจดหมาย MailMessage.SetSentDate (วันที่ใหม่ ()); // minimultipart class เป็นคลาสคอนเทนเนอร์ที่มีวัตถุของ mimebodypart type multipart mainpart = new mimemultipart (); // สร้าง mimebodypart ที่มีเนื้อหา html bodypart html = new mimebodypart (); // ตั้งค่าเนื้อหา HTML html.setContent (mailinfo.getContent (), "text/html; charset = utf-8"); // เพิ่มเนื้อหา html mimebodypart mainpart.addbodypart (html); // เพิ่มเนื้อหาไฟล์แนบถ้า (แนบ! = null) {สำหรับ (สตริง filepath: ไฟล์แนบ) {mimebodypart filepart = new MimeBodyPart (); แหล่งข้อมูลแหล่งข้อมูล = ใหม่ FileDataSource (FilePath); filepart.setDatahandler (ใหม่ Datahandler (แหล่งที่มา)); ลอง {// วิธีการหมุนเวียนออนไลน์เพื่อแก้ปัญหาชื่อไฟล์ที่อ่านไม่ออกจริง ๆ แล้วสะดวกมากในการใช้ mimeutility.encodeword เพื่อแก้ไข filepart.setfilename (mimeutility.encodeword (source.getName ()); } catch (unsupportencodingexception e) {e.printstacktrace (); } mainpart.addbodypart (filepart); }} // ตั้งค่าวัตถุ minimultipart เป็น Mail Content MailMessage.SetContent (MainPart); // รักษาเนื้อหา MailMessage.savechanges (); // ส่ง MailTransport.Send (MailMessage); กลับมาจริง; } catch (messagingException ex) {ex.printStackTrace (); } return false; } / *** @descript: รับข้อมูลข้อยกเว้นเกี่ยวกับวิธีการของผู้ส่ง* ใช้สตริงเป็นอักขระอินพุตและสตรีมเอาต์พุตของโหนดทางกายภาพนั่นคือการใช้งานของ StringReader และ StringWriter* Printwriter // StringWriter Exception Information StringWriter SW = ใหม่ StringWriter (); PrintWriter PW = PrintWriter ใหม่ (SW, TRUE); E.PrintStackTrace (PW); pw.flush (); sw.flush (); กลับ sw.tostring (); } /*** @descript: ทดสอบ* @param args* /โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// ทดสอบ 1: ส่งอีเมลในรูปแบบข้อความลอง {string s = ""; S.Substring (2); } catch (exception e) {e.printstacktrace (); System.out.println (getEmessage (e)); SendExceptionMail (ใหม่ ExceptionInfo (Developer.sanghaiqin.getName (), "get ()", "123", e)); } // ทดสอบ 2: ส่งอีเมลในรูปแบบ html mailsenderinfo mailinfo = new mailsenderInfo (); mailinfo.settoaddress ("[email protected]"); // ตั้งค่าที่อยู่อีเมลของผู้รับ MailInfo.SetSubject ("ชื่อ"); MailInfo.SetContent ("เนื้อหา <H1> www.baidu.com </h1>"); สตริง [] files = {"g: /upload/image/2016/10/28/1477372845440.jpg", "g: /upload/image/2016/10/28/1477372845660.jpg"}; javamail.sendhtmlmail (MailInfo, ไฟล์); // ส่งรูปแบบ html system.out.println ("ส่งสำเร็จ"); -ทดสอบภาพหน้าจอ:
ทดสอบ 1: ส่งอีเมลในรูปแบบข้อความ:
ทดสอบ 2: ส่งอีเมลในรูปแบบ HTML:
ภาพหน้าจอโครงสร้างโครงการ:
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น