คำนำ
โปรดทราบ: ที่อยู่อีเมลทดสอบที่ใช้โดยรหัสต่อไปนี้คือ 126 กล่องจดหมายซึ่งมีอยู่ในการทดสอบจริง โปรดทราบว่าในระหว่างการทดสอบส่วนบุคคลให้ความสนใจกับเนื้อหาอีเมลที่ส่งมา เซิร์ฟเวอร์อีเมลจะตรวจสอบเนื้อหาอีเมลและเซิร์ฟเวอร์อีเมลค่อนข้างเข้มงวด หากคุณไม่ระวังคุณจะถูกตัดสินว่าเป็นสแปมแล้วคุณจะถูกส่งคืนด้วยรหัสข้อผิดพลาด:
รหัสตัวอย่าง
นำเข้า java.util.date; นำเข้า java.util.properties; นำเข้า Javax.mail.authenticator; นำเข้า Javax.mail.message นำเข้า Javax.mail.passwordauthentication; นำเข้า Javax.mail.session; javax.mail.internet.mimebodypart; นำเข้า javax.mail.internet.mimemessage นำเข้า Javax.mail.internet.mimemultipart นำเข้า javax.mail.internet.mimeutility; // ชื่อผู้ใช้ของผู้ส่งรหัสผ่านสตริงสุดท้ายคงที่ = "รหัสผ่าน"; // รหัสผ่านของผู้ส่งส่วนตัวคงที่สตริงสุดท้าย hostname = "smtp.126.com"; // ที่อยู่เซิร์ฟเวอร์ SMTP ที่อยู่สตริงสุดท้ายแบบคงที่ส่วนตัว FromAdDress = ชื่อผู้ใช้ + "@126.com"; // email ของผู้ส่งสตริงสุดท้ายคงที่สตริง fromusername = "บล็อกภาษาจีน CNCD-code"; // ชื่อของผู้ส่งสามารถเขียนเป็นสตริงสุดท้ายคงที่ส่วนตัว emailTitle = "บล็อกภาษาจีน CNCD-Code"; // ชื่ออีเมลที่เป็นส่วนตัวสตริงสุดท้าย emailcontent = "ยินดีต้อนรับสู่การใช้บล็อกภาษาจีน CNCD-code เพื่อเปิดใช้งานอีเมลโปรดคลิกลิงก์ทางด้านขวาเพื่อให้การเปิดใช้งานบัญชีเสร็จสิ้น:/n"; // เนื้อหาอีเมลโมฆะสาธารณะคงที่ (สตริง [] args) } catch (exception e) {// todo บล็อก catch block ที่สร้างอัตโนมัติ e.printstacktrace (); }} / *** ส่งอีเมล* @param sendaddress ที่อยู่อีเมลที่จะส่ง* เนื้อหา @param เนื้อหาที่ส่ง* @throws ยกเว้น* / โมฆะคงที่สาธารณะ sendemail (สตริง sendaddress เนื้อหาสตริง) การโยนข้อยกเว้น {// สร้างคุณสมบัติการเชื่อมต่อ คุณสมบัติอุปกรณ์ประกอบฉาก = คุณสมบัติใหม่ (); // props.put ("mail.smtp.host", ชื่อโฮสต์); // ตั้งค่าที่อยู่เซิร์ฟเวอร์ของ SMTP คือ smtp.126.com props.put ("mail.smtp.auth", "true"); // ตั้งค่าเซิร์ฟเวอร์ SMTP ที่จะรับรองความถูกต้อง props.put ("mail.transport.protocol", "stmp"); เซสชั่นเซสชัน = เซสชัน GetInstance (อุปกรณ์ประกอบฉาก, Authenticator ใหม่ () {passworderenta passwordauthentication getPasswordauthentication () {ส่งคืนรหัสผ่านใหม่ (ชื่อผู้ใช้, รหัสผ่าน);}}); ข้อความข้อความ = new mimeMessage (เซสชัน); InternetAddress จาก = new InternetAddress (FromAddress); // ที่อยู่ผู้ส่งจาก. setPersonal (mimeutility.encodeText (FromUserName)); // ชื่อผู้ส่งข้อความ SetFrom (จาก); // internetaddress ถึง = new internetaddress ("[email protected]"); // // ที่อยู่ผู้รับ // สร้างอีเมล: message.setRecipients (message.recipientType.to, internetaddress.parse (sendaddress)); // cc ไปยังที่อยู่อีเมลของคนหลายคน // message.setRecipient (message.recipienttype.to, ถึง); // เฉพาะ cc ไปยังข้อความอีเมลของคุณ setsubject (mimeutility.encodetext (emailtitle)); // ข้อความชื่อเรื่องอีเมล SetsentDate (วันที่ใหม่ ()); mimemultipart msgmultipart = new mimemultipart ("mixed"); // ระบุเป็นข้อความความสัมพันธ์แบบผสม setContent (msgmultipart); // อีเมลเนื้อหา mimebodypart htmlpart = ใหม่ mimebodypart (); htmlpart.setContent ("<body> <div style = 'width: 1000px; ความสูง: 300px; ระยะขอบ: 0px auto; margin-bottom: 20px; border: 1px solid #92b0dd; พื้นหลัง-สี: #ffffff;'> <h3> เนื้อหา+"</div> </body>", "text/html; charset = utf-8"); // สิ่งที่ต้องทำตามคำสั่งของสมัชชามีความสำคัญมาก คุณต้องรวบรวมฟิลด์ข้อความก่อนจากนั้นรวบรวมไฟล์ msgmultipart.addbodypart (htmlpart); // ประกอบไฟล์แนบ // mimebodypart file = new MimeBodyPart (); // FELEDATASOURCE FILE_DATASOURCE = ใหม่ FELEDATASOURCE (// "D: //REPORT_DATA2.TXT"); // datahandler dh = ใหม่ datahandler (file_datasource); // file.setDatahandler (DH); // // คุณลักษณะหนึ่งของไฟล์แนบที่แยกแยะเนื้อหาที่ฝังอยู่คือมีชื่อไฟล์ซึ่งจะต้องเข้ารหัสเพื่อป้องกันรหัสภาษาจีนที่อ่านไม่ออก // file.setFilename (mimeutility.encodetext (dh.getName ()); // msgmultipart.addbodypart (ไฟล์); message.savechanges (); // กระบวนการส่งอีเมล: 95188 Transport Transport = Session.getTransport ("SMTP"); // สร้างการเชื่อมต่อ transport.connect (ชื่อโฮสต์, 25, ชื่อผู้ใช้, รหัสผ่าน); // เชื่อมต่อกับเซิร์ฟเวอร์ // ชื่อบริการ, พอร์ต, ส่งอีเมลชื่อผู้ใช้ // (อย่า @ ย้อนกลับ), รหัสผ่าน transport.sendMessage (ข้อความ, message.getAllRecipients ()); // ส่งข้อความ transport.close (); // ปิด system.out.println ("ส่งเสร็จสมบูรณ์"); -โปรดทราบว่า สำหรับเพื่อนที่ใช้รหัสนี้เป็นครั้งแรกขอแนะนำให้คุณไม่เปลี่ยนส่วนที่เหลือยกเว้นชื่อผู้ใช้และรหัสผ่านมิฉะนั้นจะถูกตัดสินว่าเป็นสแปมทางอีเมลและไม่ส่ง โดยทั่วไปเมื่อมันถูกตัดสินว่าเป็นสแปมรหัสข้อผิดพลาดที่ส่งคืนโดย NetEase มีดังนี้:
com.sun.mail.smtp.smtpsendfailedexception: 554 dt: SPM 126 smtp2, dmmowacxotzmk8vxvdknea-. 1778S2 1472566222 โปรดดู http://mail.163.com/help/help_spam_16.htm?ip=117.114.147.13&hostid=smtp2&time=1472566222 ที่ com.sun.mail.smtp.smtptransport. com.sun.mail.smtp.smtptransport.finishdata (smtptransport.java:1634) ที่ com.sun.mail.smtp.smtptransport.sendmessage (smtptransport.java:889) sendmailutil.main (sendmailutil.java:29)
หมายความว่า คุณสามารถไปที่ลิงค์ในรหัสส่งคืนข้อผิดพลาดเพื่อดูข้อมูลความช่วยเหลือ คุณสามารถป้อนลิงค์และค้นหาว่ารหัสข้อผิดพลาด 554 ข้างต้นแสดงถึงความหมาย สถานการณ์นี้มักจะถูกตัดสินว่าเป็นสแปม
ประการที่สองอย่าเรียกใช้ (ส่ง) อีเมลในรหัสข้างต้นบ่อยครั้งในระหว่างการทดสอบ หากพวกเขาบ่อยเกินไปพวกเขาจะถูกตัดสินว่าเป็นสแปมได้ง่าย ตกลงข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการศึกษาและการทำงานของทุกคน