Dalam penggunaan aktual, misalnya, jika Anda berbelanja di Taobao dan mengajukan pengembalian dana, Anda akan melihat email pengembalian dana di alamat email Anda, atau Anda mendaftarkan akun, mengajukan verifikasi pemberitahuan email, dll. Ini semua pengiriman email. Di sini akan memperkenalkan kasus transmisi email abnormal oleh sistem.
Persiapan:
eclipse4.5 64 bit
jdk1.7 64 bit
Stoples yang diperlukan untuk mengirim surat:
fastjson-1.1.24.jar, javax.mail-1.5.6.jar
Pengembang kelas:
Jenis Pencacahan, Nama Pengirim dan Alamat Email
Paket surat; / ** *@Class: Pengembang *@Deskripsi: Jenis Pencacahan, Nama Pengirim dan Alamat Email *@Tanggal: 26 Oktober 2016 jam 8:07:50 PM *@Penulis Sanghaiqin *@Versi: v1.0 */ pengembang enum publik {zhouJing ("zhou jing", "405687038@qqq." Zhouux ("Zhou Jing", "4056887038@QQQQ." ZhouJing ("ZHouUX (" ZHOUUX "," ZHOUUX "," ZHOUJING "," 405687038 Yuxiang "," [email protected] "), yipeng (" ypeng "," [email protected] "), Liuan (" Liu An "," [email protected] "), Chenyuhao (" Chen YuHao "," 6316, "6316," 6316, " Dong "," [email protected] "), sanghaiqin (" Sang Haiqin "," [email protected] "); // Nama Pengirim Nama String Pribadi; // Pengirim Email Surat String Pribadi; pengembang pribadi () {} pengembang pribadi (nama string, string mail) {this.name = name; this.mail = mail; } / *** @descript: Lewati nama pengirim untuk mendapatkan email pengirim* @param nama nama pengirim* @return* / public static string getMail (nama string) {for (pengembang c: pengembang.values ()) {if (c.getName (). Equals (name)) {c.mailues ()) {if (c.getname (). Equals (name)) {c.mail; }} return null; } public string getName () {return name; } public void setName (name string) {this.name = name; } public String getMail () {return mail; } public void setMail (string mail) {this.mail = mail; }} Class ExceptionInfo: Informasi Pengirim
Paket surat; /** *@Class: ExceptionInfo *@Deskripsi: Informasi Pengirim *@Tanggal: 26 Oktober 2016 jam 8:11:27 PM *@Penulis Sanghaiqin *@Versi: V1.0 */Public Class ExceptionInfo {// Pengirim Nama Pengembang Private String Private; // metode pengirim metode string pribadi; // pengirim url url string pribadi; // pengirim tangkapan informasi pengecualian Pengecualian pribadi E; / *** @param pengembang nama pengirim* @param metode metode pengirim* @param url pengirim url* @param e pengirim menangkap informasi pengecualian*/ public exceptionInfo (pengembang string, metode string, string url, pengecualian e) {super (); this.developer = pengembang; this.method = metode; this.url = url; this.e = e; } public String getDevelever () {return developer; } public void setDeveloper (string developer) {this.developer = pengembang; } public String getMethod () {return Method; } public void setMethod (Metode String) {this.method = metode; } public String getUrl () {return url; } public void setUrl (string url) {this.url = url; } public Exception gete () {return e; } public void setE (Exception e) {this.e = e; }} MailSenderInfo: Kirim Informasi Email
Paket surat; impor java.util.properties; /** *@class: MailSenderInfo *@Deskripsi: Kirim Informasi Email *@Tanggal: 26 Oktober 2016 jam 8:14:22 PM *@Penulis Sanghaiqin *@Versi: V1.0 */Kelas Publik Mailsenderinfo {// IP Private String MailServerHost dari server yang mengirim surat; // port server yang mengirim surat adalah 25 mailserverport string pribadi = "25"; // Alamat pengirim string privat Mail dari ADDRESS; // Alamat penerima mail string pribadi ToAddress; // Masuk ke nama pengguna UserName String Private String Server Mailing Sage Server; // Masuk ke Kata Sandi Private String Private String Private String Server Mail; // Apakah Anda memerlukan otentikasi private boolean validate = false; // Subjek email subjek string pribadi; // Konten teks dari konten string pribadi Mail; // Nama file dari lampiran surat Private String [] lampiranFileNames; public mailSenderInfo () {super (); } public String getMailServerHost () {return mailServerhost; } public void setMailServerHost (String MailServerHost) {this.mailserverhost = mailServerHost; } public String getMailServerport () {return mailServerport; } public void setMailServerport (String mailServerport) {this.mailserverport = mailserverport; } public boolean isValidate () {return validate; } public void setValidate (boolean validate) {this.validate = validate; } public string [] getattachfileNames () {return lampiranFileNames; } public void setattachFileNames (string [] fileNames) {this.attachfileNames = fileNames; } public string getFromAddress () {return fromAddress; } public void setfromAddress (String fromAddress) {this.fromAddress = fromAddress; } public string getPassword () {return kata sandi; } public void setPassword (kata sandi string) {this.password = kata sandi; } public String getToadDress () {return toAddress; } public void setoaddress (String toAddress) {this.toaddress = toAddress; } string publik getUserName () {return username; } public void setusername (string username) {this.username = username; } string publik getSubject () {return subjek; } public void setSubject (string subjek) {this.subject = subjek; } public String getContent () {return content; } public void setContent (String TextContent) {this.content = TextContent; } / *** @Descript: Dapatkan Properti Sesi Email* @Return* / Properti Public GetProperties () {PropertyUtil PropertyUtil = new Propertyutil (); Properties Properties = PropertyUtil.readProperties (); properti mengembalikan; }} Kelas MyAuthenticator: Authenticator Pengguna
Paket surat; impor javax.mail.authenticator; impor javax.mail.passwordAuthentication; /** *@class: myAuthenticator *@deskripsi: verifikasi pengguna *@Tanggal: 26 Oktober 2016 jam 8:57:45 pm *@penulis sanghaiqin *@versi: v1.0 */kelas publik myAuthenticator memperluas authenticator {// Username string username = null; // Kata sandi string kata sandi = null; public myAuthenticator () {} public myAuthenticator (string username, string password) {this.userName = username; this.password = kata sandi; } lindung kata sandi yang dilindungi getPasswordAuthentication () {return new passwardAuthentication (nama pengguna, kata sandi); }} Kelas Propertyutil: Dapatkan Properti Kelas Alat File
Paket surat; impor java.io.fileInputStream; impor java.io.filenotfoundException; impor java.io.ioException; impor java.io.inputstream; impor java.util.properties; /** * @class:PropertyUtil *@descript: Obtain properties file tool class*@date: October 26, 2016 at 8:20:10 pm *@author sanghaiqin *@version:V1.0 */ public class PropertyUtil { /** * @descript:Loading resource file* @param resources resource file* @return * @throws FileNotFoundException */ private Properties loadProperties(String resources) { InputStream inputStream = null; Properti properti = properti baru (); // Gunakan inputStream untuk mendapatkan file sumber daya coba {inputStream = new FileInputStream (sumber daya); // Muat properti file konfigurasi.load (inputStream); } catch (FileNotFoundException e) {e.printstacktrace (); } catch (ioException e) {e.printstacktrace (); } akhirnya {if (inputStream! = null) {coba {inputStream.close (); } catch (ioException e) {e.printstacktrace (); }} mengembalikan properti; } / ** * @descript: Baca file properti * @return * @throws filenotfoundException * / properti publik readProperties () {string resources = propertieutil.class.getClassLoader (). getResource ("prop.properties"). getPath (); Properties Properties = LoadProperties (sumber daya); properti mengembalikan; } / *** @descript: test* @param args* / public static void main (string [] args) {propertieutil p = new Propertyutil (); Properties Pro = P.ReadProperties (); String mailsendereSerName = (string) pro.get ("mail.sender.username"); System.out.println ("Nama pengguna pengirim surat:"+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 File Sumber Daya:
#----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #ALAMAT EMAIL SENDER [email protected]
Kelas Javamail: Kirim kotak surat
Paket surat; impor java.io.printwriter; impor java.io.stringwriter; impor java.io.unsupportedencodingException; impor java.net.inetaddress; impor java.net.unknownhostException; impor java.util.date; impor java.util.properties; impor javax.activation.datahandler; impor javax.activation.datasource; impor javax.activation.fileDataSource; impor javax.mail.address; Impor Javax. javax.mail.bodypart; impor javax.mail.message; impor javax.mail.messagingException; impor javax.mail.multipart; impor javax.mail.Session; impor javax.mail.transport; impor javax.mail.internet.internetaddress; impor javax.mail.internet.imebodypart; impor javax.mail.internet.mimemessage; impor javax.mail.internet.mimemultipart; impor javax.mail.internet.mimeutility; / ** *@class: javamail *@deskripsi: Paket jar Diperlukan untuk mengirim kotak surat informasi *: *fastjson-1.1.24.jar *javax.mail-1.5.6.jar *@Tanggal: 26 Oktober 2016 jam 8:13:05 pm *@penulis sanghaiqin *@versi: v1.0 *public class public javaMail {versepticin *@versi: V1.0 */ Public class public javail {verseptic {Version: v1.0 * info) {coba {// Dapatkan email pengirim melalui pengirim string mail = developer.getMail (info.getDeveleveloper ()); if (mail! = null) {mailSenderInfo mailInfo = new MailSenderInfo (); // Atur konten teks dari email mailInfo.setContent ("bertanggung jawab:"+info.getDeveloper ()+"==> server ip:"+inetaddress.getLocalhost (). GetHostAddress ()+"==> Metode nama:"+info.getMethod ()+"==> Info."+Info. "+geteMessage (info.gete ())); // Atur alamat penerima email MailInfo.settoaddress (Mail); // email subjek mailinfo.setsubject ("yika aitu notifikasi pengecualian"); // Kirim Email SendTextMail (MailInfo); }} catch (unknownHostException e) {e.printstacktrace (); }} /*** @descript: Kirim email dalam format teks* @param: informasi mailinfo dari email yang akan dikirim* @return: Kirim true setelah pengiriman yang berhasil; Return false setelah kegagalan */ public static boolean sendtextmail (mailsenderInfo mailinfo) {// Tentukan apakah otentikasi identitas diperlukan myauthenticator authenticator = null; Properties Pro = MailInfo.getProperties (); try { if ("true".trim().equals(pro.getProperty("mail.smtp.auth"))) { // If authentication is required, create a password authenticator authenticator = new MyAuthenticator(pro.getProperty("mail.sender.username"),pro.getProperty("mail.sender.password")); } // Bangun sesi untuk mengirim surat berdasarkan properti sesi surat dan kata sandi sesi authenticator sendMailSession = session.getDefaultInstance (Pro, authenticator); // Buat pesan email berdasarkan pesan sesi mailmessage = mimemessage baru (sendmailsession); // Buat pengirim alamat pesan email dari = new internetAddress (pro.getProperty ("mail.sender.address")); // atur pengirim pesan surat mailmessage.setFrom (dari); // Buat alamat penerima pesan email dan atur ke alamat pesan email ke = InternetAddress baru (mailInfo.gettoaddress ()); // Atribut message.recipienttype.to menunjukkan bahwa jenis penerima adalah ke mailmessage.setrecipient (message.recipienttype.to, to); // Atur subjek pesan surat mailmessage.setsubject (mailinfo.getsubject ()); // atur waktu untuk mengirim pesan surat mailmessage.setsentDate (tanggal baru ()); // Atur konten utama dari pesan surat mailmessage.settext (mailinfo.getContent ()); // Kirim Mail Transport.Send (MailMessage); Kembali Benar; } catch (MessagingException ex) {ex.PrintStackTrace (); } return false; } /** * @descript: Kirim email dalam format html * @param mailinfo: informasi surat yang akan dikirim * @param lampiran: konten lampiran * @return: true saat dikirimkan dengan sukses; false ketika gagal */ public static boolean sendHtmlmail (mailsenderinfo mailinfo, string [] lampiran) {// Tentukan apakah otentikasi identitas diperlukan otenticator myauthentikator = null; Properties Pro = MailInfo.getProperties (); Coba {// Jika otentikasi identitas diperlukan, buat authenticator kata sandi if ("true" .trim (). Equals (pro.getProperty ("mail.smtp.Auth"))) {// Jika otentikasi identitas diperlukan, buat authenticator kata sandi = baru Myauthenticator (pro.getProperty ("mail.sender.username"), pro.getProperty ("mail.sender.password")); } // Bangun sesi untuk mengirim surat berdasarkan properti sesi surat dan authenticator kata sandi. Sesi sendmailSession = session.getDefaultInstance (Pro, authenticator); // Buat pesan email berdasarkan pesan sesi mailmessage = mimemessage baru (sendmailsession); // Buat alamat alamat pengirim surat dari = new internetAddress (pro.getProperty ("mail.sender.address")); // atur pengirim pesan surat mailmessage.setFrom (dari); // Buat alamat penerima pesan email dan atur ke alamat pesan email ke = InternetAddress baru (mailInfo.gettoaddress ()); // Atribut message.recipienttype.to menunjukkan bahwa jenis penerima adalah ke mailmessage.setrecipient (message.recipienttype.to, to); // Atur subjek pesan surat mailmessage.setsubject (mailinfo.getsubject ()); // atur waktu untuk mengirim pesan surat mailmessage.setsentDate (tanggal baru ()); // Kelas MiniMultipart adalah kelas kontainer yang berisi objek tipe mimebodypart multipart MainPart = mimemultipart baru (); // Buat mimebodypart yang berisi konten html bodypart html = mimebodypart baru (); // atur konten html html.setContent (mailinfo.getContent (), "text/html; charset = utf-8"); // Tambahkan konten html mimebodypart mainpart.addbodypart (html); // Tambahkan konten lampiran if (attachment! = Null) {for (string filePath: lampiran) {mimebodypart filepart = new mimebodypart (); Sumber DataSource = FileDataSource baru (FilePath); filepart.setDataHandler (DataHandler baru (sumber)); coba {// metode yang beredar online untuk menyelesaikan nama file yang kacau sebenarnya sangat nyaman untuk menggunakan mimeutility.encodeword untuk menyelesaikan filepart.setFileName (mimeutility.encodeword (sumber.getName ())); } catch (UnsupportedEncodingException e) {e.printstacktrace (); } mainpart.addbodypart (filepart); }} // Atur objek MiniMultiPart ke surat mailmessage.setContent (MainPart); // simpan konten mailmessage.savechanges (); // Kirim MailTransport.Send (MailMessage); Kembali Benar; } catch (MessagingException ex) {ex.PrintStackTrace (); } return false; } /** * @descript: Get exception information about the sender method* Use strings as the character input and output streams of physical nodes, that is, the usage of StringReader and StringWriter* PrintWriter(Writer out, boolean autoFlush) Create a new PrintWriter with automatic row refresh, true means it can refresh automatically* @param e Exception information* @return */ private static String getEmessage(Exception e) {// StringWriter Output Informasi Pengecualian StringWriter SW = New StringWriter (); Printwriter pw = printwriter baru (sw, true); E.PrintStackTrace (PW); pw.flush (); sw.flush (); return sw.tostring (); } /*** @descript: test* @param args* /public static void main (string [] args) {// test 1: kirim email dalam format teks coba {string s = ""; S.Substring (2); } catch (Exception e) {E.PrintStackTrace (); System.out.println (getemessage (e)); sendExceptionMail (ExceptionInfo baru (pengembang.sanghaiqin.getname (), "get ()", "123", e)); } // Test 2: Kirim email dalam format html mailsenderinfo mailinfo = new MailSenderInfo (); mailinfo.settoaddress ("[email protected]"); // Atur alamat email penerima mailInfo.setsubject ("title"); mailInfo.setContent ("Konten <H1> www.baidu.com </h1>"); String [] file = {"g: /upload/image/2016/10/28/1477372845440.jpg", "g: /upload/image/2016/10/28/1477372845660.jpg"}; Javamail.sendhtmlmail (mailInfo, file); // Kirim format html System.out.println ("Kirim berhasil"); }}Tes screenshot:
Tes 1: Kirim email dalam format teks:
Tes 2: Kirim email dalam format HTML:
Tangkapan layar struktur proyek:
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.