في الاستخدام الفعلي ، على سبيل المثال ، إذا كنت تتسوق على Taobao وتقدم بطلب لاسترداد المبلغ ، فستشاهد بريدًا إلكترونيًا استردادًا في عنوان بريدك الإلكتروني ، أو تقوم بتسجيل حساب ، وتقدم بطلب للتحقق من إشعار البريد الإلكتروني ، وما إلى ذلك. هذه كلها إرسال بريد إلكتروني. هنا ستقدم حالة نقل البريد الإلكتروني غير الطبيعية حسب النظام.
تحضير:
Eclipse4.5 64 بت
JDK1.7 64 بت
الجرة المطلوبة لإرسال البريد:
Fastjson -1.1.24.jar ، Javax.Mail-1.5.6.Jar
مطور الفصل:
نوع التعداد واسم المرسل وعنوان البريد الإلكتروني
حزمة البريد / ** *cclass: مطور *@descript: نوع التعداد ، اسم المرسل وعنوان البريد الإلكتروني *@التاريخ: 26 أكتوبر ، 2016 في الساعة 8:07:50 مساءً *@مؤلف Sanghaiqin *@الإصدار: v1.0 */ public enum developer {zhoujing ("zhou jing" ، "405687038 Yuxiang "،" [email protected] ") ، Yipeng (" Ypeng "،" [email protected] ") ، liuan (" liu an "،" [email protected] ") ، chenyuhao (" chen yuhao "، Dong "،" [email protected] ") ، Sanghaiqin (" Sang Haiqin "،" [email protected] ") ؛ // اسم المرسل اسم السلسلة الخاصة ؛ // المرسل بريد إلكتروني بريد السلسلة الخاصة ؛ Private Developer () {} مطور خاص (اسم السلسلة ، بريد السلسلة) {this.name = name ؛ this.mail = mail ؛ } / *** descript: تمرير اسم المرسل للحصول على البريد الإلكتروني للمرسل* @param اسم المرسل* return* / السلسلة الثابتة العامة getMail (اسم السلسلة) {for (developer c: developer.values ()) {if (c.getName (). equals (name)) }} الإرجاع null ؛ } السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } السلسلة العامة getMail () {return mail ؛ } public void setMail (سلسلة البريد) {this.mail = mail ؛ }} استثناء الفصل: معلومات المرسل
حزمة البريد /** *cclass: استثناء *@DECRIPT: معلومات المرسل *@التاريخ: 26 أكتوبر ، 2016 في 8:11:27 PM *@المؤلف SANGHAIQIN *@الإصدار: v1.0 */public class استثناء {// Sender Name Private String Developer ؛ // طريقة المرسل طريقة السلسلة الخاصة ؛ // Sender URL url url url url ؛ // المرسل يمسك معلومات الاستثناء استثناء خاص ؛ / *** @Param Developer Sender Name* param طريقة المرسل* param url sender url* param e sender stisples information*/ public stiventInfo (string developer ، method string ، url url ، stistent e) {super () ؛ this.developer = مطور ؛ this.method = method ؛ this.url = url ؛ this.e = e ؛ } السلسلة العامة getDeveloper () {return developer ؛ } public void setDeveloper (string developer) {this.developer = developer ؛ } السلسلة العامة getMethod () {return method ؛ } public void setMethod (طريقة السلسلة) {this.method = method ؛ } السلسلة العامة geturl () {return url ؛ } public void seturl (url url) {this.url = url ؛ } الاستثناء العام gete () {return e ؛ } public void sete (استثناء e) {this.e = e ؛ }} MailSenderInfo: إرسال معلومات البريد الإلكتروني
حزمة البريد استيراد java.util.properties ؛ /** *cclass: MailSenderInfo *@Descript: إرسال معلومات البريد الإلكتروني *@التاريخ: 26 أكتوبر ، 2016 في 8:14:22 PM *@Author SANGHAIQIN *@الإصدار: v1.0 */public class mailsenderInfo {// the IP private mailserverhost server the mail ؛ // منفذ الخادم الذي يرسل البريد هو 25 سلسلة خاصة mailserverport = "25" ؛ // عنوان مرسل السلسلة الخاصة Mail Fromaddress ؛ // عنوان سلسلة Mail Private String Toaddress ؛ // قم بتسجيل الدخول إلى اسم المستخدم الخاص بالسلسلة الخاصة بخادم البريد ؛ // قم بتسجيل الدخول إلى كلمة مرور إرسال كلمة مرور إرسال كلمة مرور الخادم ؛ // هل تحتاج المصادقة إلى التحقق من صحة المنطقية الخاصة = خطأ ؛ // موضوع البريد الإلكتروني موضوع السلسلة الخاصة ؛ // محتوى النص لمحتوى السلسلة الخاصة بالبريد ؛ // اسم ملف مرفق البريد الخاص السلسلة الخاصة [] إرفاق الأسماء ؛ MailSenderInfo () {super () ؛ } السلسلة العامة getMailserverHost () {return mailserverhost ؛ } public void setmailserverhost (سلسلة mailserverhost) {this.mailserverhost = mailserverhost ؛ } السلسلة العامة getMailserverPort () {return mailserverport ؛ } public void setmailserverport (سلسلة mailserverport) {this.mailserverport = mailserverport ؛ } boolean public isValidate () {return vialthed ؛ } public void setValidate (Boolean Deptor) {this.validate = validay ؛ } السلسلة العامة [] getattachfilenames () {return anclesfilenames ؛ } public void setattachfilenames (string [] fildenames) {this.attachfilenames = fileNames ؛ } السلسلة العامة getFromAddress () {return fromaddress ؛ } public void setfromaddress (سلسلة من adaddress) {this.fromaddress = fromaddress ؛ } السلسلة العامة getPassword () {return password ؛ } public void setPassword (سلسلة كلمة مرور) {this.password = password ؛ } السلسلة العامة getToadDress () {return toaddress ؛ } public void settoaddress (String toaddress) {this.toaddress = toaddress ؛ } السلسلة العامة getUserName () {return username ؛ } public void setusername (string username) {this.userName = username ؛ } السلسلة العامة getSubject () {return subner ؛ } public void setSUBject (string string) {this.subject = toffice ؛ } السلسلة العامة getContent () {return content ؛ } public void setContent (String textContent) {this.content = textContent ؛ } / *** descript: احصل على خاصية جلسة البريد الإلكتروني* @RETURN* / Public Properties getProperties () {propertyUtil propertyUtil = new propertyUtil () ؛ خصائص الخصائص = propertyUtil.ReadProperties () ؛ عودة خصائص }} فئة myauthenticator: مصادقة المستخدم
حزمة البريد استيراد javax.mail.Authenticator ؛ استيراد javax.mail.passwordauthentication ؛ /** *cclass: myauthenticator *@discript: التحقق من المستخدم *@التاريخ: 26 أكتوبر ، 2016 في الساعة 8:57:45 مساءً *@المؤلف Sanghaiqin *@الإصدار: v1.0 */فئة عامة myauthenticator يمتد Authenticator {// username string username = null ؛ // كلمة مرور سلسلة كلمة المرور = null ؛ public myauthenticator () {} public myAuthentIcator (اسم مستخدم السلسلة ، كلمة مرور السلسلة) {this.username = username ؛ this.password = كلمة المرور ؛ } passwordauthentication getPasswordauthentication () {إرجاع كلمة مرور جديدة (اسم المستخدم ، كلمة المرور) ؛ }} PropertyUtil: الحصول على فئة أدوات ملف الخصائص
حزمة البريد استيراد java.io.fileInputStream ؛ استيراد java.io.filenotfoundException ؛ استيراد java.io.ioException ؛ استيراد java.io.inputstream ؛ استيراد java.util.properties ؛ / ** *cclass: propertyUtil * @descript: الحصول على خصائص فئة أداة ملفات * @التاريخ: 26 أكتوبر ، 2016 في 8:20:10 PM * @المؤلف SANGHAIQIN inputStream = null ؛ خصائص الخصائص = خصائص جديدة () ؛ // استخدم inputStream للحصول على ملف مورد ، حاول {inputStream = جديد fileInputStream (الموارد) ؛ // تحميل خصائص ملف التكوين. تحميل (inputStream) ؛ } catch (fileNotFoundException e) {e.printStackTrace () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } أخيرًا {if (inputStream! = null) {try {inputStream.close () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }} عودة خصائص ؛ } / ** * descript: قراءة ملف الخصائص * regurn * throws fileNotFoundException * / Public Properties readProperties () {String Resources = propertyUtil.class.getClassLoader (). getResource ("prop.properties"). getPath () ؛ خصائص الخصائص = loadProperties (الموارد) ؛ عودة خصائص } / *** descript: test* param args* / public static void main (string [] args) {propertyUtil p = new propertyUtil () ؛ Properties 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:
#------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #Sender's Email Address [email protected]
فئة Javamail: إرسال صندوق البريد
حزمة البريد استيراد java.io.printwriter ؛ استيراد java.io.stringWriter ؛ استيراد java.io.unsupportedencodingException ؛ استيراد 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.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.mimessage ؛ استيراد javax.mail.internet.mimemultipart ؛ استيراد javax.mail.internet.mimeutility ؛ / ** *cclass: javamail *@descript: حزمة جرة مطلوبة لإرسال صندوق بريد المعلومات *: *fastjson -1.24.jar *javax.mail-1.5.6.jar *@Date: 26 أكتوبر ، 2016 في 8:13:05 PM {// احصل على البريد الإلكتروني للمرسل من خلال سلسلة Sender String = Developer.getMail (info.getDeveloper ()) ؛ if (mail! = null) {mailSenderInfo mailInfo = new MailSenderInfo () ؛ // قم بتعيين المحتوى النصي لـ mailInfo.setContent ("المسؤول:"+info.getDeveloper ()+"==> خادم IP:"+inetaddress.getlocalhost (). "+getemessage (info.gete ())) ؛ // قم بتعيين عنوان مستلم البريد الإلكتروني MailInfo.settoaddress (Mail) ؛ // البريد الإلكتروني موضوع mailInfo.SetSubject ("إشعار استثناء Yika AITU") ؛ // إرسال البريد الإلكتروني sendTextMail (mailInfo) ؛ }} catch (unknownHostException e) {e.printStackTrace () ؛ }} /*** descript: أرسل بريدًا إلكترونيًا بتنسيق نص* param: معلومات mailInfo للبريد الإلكتروني ليتم إرسالها* @RETURN: إرسال true بعد إرسال ناجح ؛ إرجاع خطأ بعد الفشل */ SendTextMail الثابت العام (MailSenderInfo MailInfo) {// تحديد ما إذا كانت مصادقة الهوية مطلوبة مصادقة myauthenticator = null ؛ Properties Pro = MailInfo.getProperties () ؛ جرب {if ("true" .trim (). equals (pro.getProperty ("mail.smtp.auth")))) {// إذا كانت المصادقة مطلوبة ، قم بإنشاء مصادقة كلمة مرور = new myauthenticator (pro.getProperty ("mail.sender.username") ، pro.getProperty ( }. // قم بإنشاء رسالة بريد بناءً على رسالة MailMessage = mimemessage جديد (SendMailsession) ؛ // إنشاء مرسل عنوان رسالة البريد من = new InternetAddress (pro.getProperty ("mail.sender.address")) ؛ // قم بتعيين مرسل رسالة البريد mailmessage.setfrom (من) ؛ // قم بإنشاء عنوان المستلم لرسالة البريد وقم بتعيينه على عنوان رسالة البريد إلى = New InternetAddress (mailInfo.getToaddress ()) ؛ // message.RecipientType.to تشير السمة إلى أن نوع المستلم هو إلى mailmessage.setRecipient (message.RecipientType.to ، to) ؛ // قم بتعيين موضوع رسالة البريد mailmessage.setsubject (mailInfo.getSubject ()) ؛ // قم بتعيين الوقت لإرسال رسالة البريد mailmessage.setsentDate (تاريخ جديد ()) ؛ // قم بتعيين المحتوى الرئيسي لرسالة البريد mailmessage.settext (mailInfo.getContent ()) ؛ // إرسال Mail Transport.send (MailMessage) ؛ العودة صحيح. } catch (messagingException ex) {ex.printStackTrace () ؛ } إرجاع خطأ ؛ } /** * descript: أرسل بريدًا بتنسيق html * param mailInfo: معلومات البريد المراد إرسالها * @param المرفق: محتوى المرفق * return: صحيح عند إرساله بنجاح ؛ خطأ عند الفشل */ static boolean sendhtmlmail (MailSenderInfo mailInfo ، string [] مرفق) {// تحديد ما إذا كانت مصادقة الهوية مطلوبة myAuthenticator Authenticator = null ؛ Properties Pro = MailInfo.getProperties () ؛ جرب {// إذا كانت مصادقة الهوية مطلوبة ، قم بإنشاء مصادقة كلمة مرور إذا ("true" .trim (). يساوي (pro.getProperty ("mail.smtp.auth"))) {// إذا كانت مصادقة الهوية مطلوبة ، قم بإنشاء كلمة مرور anuatlearicator = new myAuthentIcator (getProperty ("mail.sender.username") } // إنشاء جلسة لإرسال بريد بناءً على خصائص جلسة البريد ومصادقة كلمة المرور. SESSING SENDMailsession = SATES.GETDEFAULTINSTANCE (PRO ، Authenticator) ؛ // قم بإنشاء رسالة بريد بناءً على رسالة MailMessage = mimemessage جديد (SendMailsession) ؛ // إنشاء عنوان عنوان مرسل البريد من = new InternetAddress (pro.getProperty ("mail.sender.address")) ؛ // قم بتعيين مرسل رسالة البريد mailmessage.setfrom (من) ؛ // قم بإنشاء عنوان المستلم لرسالة البريد وقم بتعيينه على عنوان رسالة البريد إلى = New InternetAddress (mailInfo.getToaddress ()) ؛ // message.RecipientType.to تشير السمة إلى أن نوع المستلم هو إلى mailmessage.setRecipient (message.RecipientType.to ، to) ؛ // قم بتعيين موضوع رسالة البريد mailmessage.setsubject (mailInfo.getSubject ()) ؛ // قم بتعيين الوقت لإرسال رسائل البريد mailmessage.setsentDate (تاريخ جديد ()) ؛ . // إنشاء mimebodypart يحتوي على html content bodypart html = new MimebodyPart () ؛ // تعيين HTML Content HTML.SetContent (MailInfo.getContent () ، "Text/Html ؛ Charset = Utf-8") ؛ // إضافة html content mimebodypart mainpart.addbodypart (html) ؛ // إضافة محتوى المرفق if (المرفق! = null) {for (string filepath: anclantment) {mimeBodyPart filePart = new mimebodypart () ؛ مصدر بيانات البيانات = FileDataSource الجديد (FilePath) ؛ FilePart.SetDatahandler (New Datahandler (Source)) ؛ جرب {// الطريقة المنتشرة عبر الإنترنت لحل أسماء الملفات المشوهة هي في الواقع مريحة للغاية لاستخدام mimeutility.encodeword لحل filepart.setFilename (mimeutility.encodeword (source.getName ())) ؛ } catch (UnsupportedEncodingException e) {E.PrintStackTrace () ؛ } mainpart.addbodypart (filepart) ؛ }} // قم بتعيين كائن MinimultIpart على محتوى البريد mailmessage.setContent (MainPart) ؛ // الحفاظ على المحتوى mailmessage.savechanges () ؛ // إرسال mailtransport.send (mailMessage) ؛ العودة صحيح. } catch (messagingException ex) {ex.printStackTrace () ؛ } إرجاع خطأ ؛ } /*** descript: احصل على معلومات استثناء حول طريقة المرسل* استخدم السلاسل كأشكال إدخال الحرف وإخراج العقد المادية ، أي أن استخدام stringReader و StringWriter* printWriter (الكاتب خارج ، atoflaush boolean) ، قم بإنشاء string string string statiTer* string string stiter stiter (static) إخراج معلومات استثناء stringWriter SW = New StringWriter () ؛ printWriter PW = New PrintWriter (SW ، true) ؛ E.PrintStackTrace (PW) ؛ pw.flush () ؛ sw.flush () ؛ إرجاع sw.tostring () ؛ } /*** descript: test* param args* /public static void main (string [] args) {// test 1: إرسال بريد إلكتروني بتنسيق نص ، جرب {string s = "" ؛ S.SubString (2) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ system.out.println (getEmessage (e)) ؛ SendExceptionMail (استثناء جديد (Developer.Sanghaiqin.getName () ، "get ()" ، "123" ، e)) ؛ }. MailInfo.SettoAddress ("[email protected]") ؛ // قم بتعيين عنوان البريد الإلكتروني للمستلم mailInfo.SetSubject ("title") ؛ MailInfo.setContent ("المحتوى <h1> www.baidu.com </h1>") ؛ string [] files = {"g: /upload/image/2016/10/28/147737284540.jpg" ، "g: /Upload/image/2016/10/28/1477372845660.jpg"} ؛ javamail.sendhtmlmail (mailInfo ، files) ؛ // إرسال HTML Format System.out.println ("إرسال بنجاح") ؛ }}لقطة الشاشة:
الاختبار 1: إرسال رسائل البريد الإلكتروني بتنسيق النص:
الاختبار 2: إرسال رسائل البريد الإلكتروني بتنسيق HTML:
لقطة شاشة هيكل المشروع:
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.