Java Mail هي أداة تستخدم حسابات البريد الإلكتروني الحالية لإرسال رسائل البريد الإلكتروني. على سبيل المثال ، أقوم بتسجيل حساب بريد إلكتروني مع Netease. من خلال التحكم في بريد Java ، لا يمكنني تسجيل الدخول إلى Netease Mailbox شخصيًا ، بحيث يمكن للبرنامج استخدام صندوق بريد Netease تلقائيًا لإرسال رسائل البريد الإلكتروني. تستخدم هذه الآلية على نطاق واسع في تنشيط التسجيل وإرسال البريد العشوائي.
العملية العامة لإرسال بريد java هي كما يلي:
1. بناء فئة محددة موروثة من javax.mail.authenticator ، وتجاوز طريقة getPasswordauthentication () في الداخل. يتم استخدام هذه الفئة كتحقق من تسجيل الدخول للتأكد من أن لديك الحق في إرسال رسائل البريد الإلكتروني إلى صندوق البريد هذا.
2. قم بإنشاء ملف خصائص ، والذي يخزن المعلمات مثل عنوان خادم SMTP.
3. قم بإنشاء javax.mail.session من خلال ملف الخصائص المدمجة وفئة الخرسانة javax.mail.authenticator. إن إنشاء جلسة يعادل تسجيل الدخول إلى عنوان البريد الإلكتروني. الباقي هو بطبيعة الحال رسالة بريد إلكتروني جديدة.
4. لإنشاء محتوى البريد الإلكتروني ، إنه عمومًا كائن javax.mail.internet.mimemessage ، وحدد المرسل ، المستلم ، الموضوع ، المحتوى ، إلخ.
5. استخدم فئة أدوات javax.mail.transport لإرسال رسائل البريد الإلكتروني.
فيما يلي الرمز الذي غلفته ، والتعليقات مفصلة أيضًا تمامًا.
1. أولاً ، إنها فئة محددة موروثة من javax.mail.authenticator. تتمثل طريقة getPasswordaUthentication () في إنشاء كائن صادر عن كلمة مرور وإعادته ، وهو أمر محير بعض الشيء لفهم نوايا تصميم Java Mail. قد يكون javax.mail.Authenticator يوفر لنا تدابير التحقق الإضافية لضمان الأمن.
حزمة com.mzule.simplemail ؛ استيراد javax.mail.authenticator ؛ استيراد javax.mail.passwordauthentication ؛ /** * التحقق من تسجيل الدخول إلى صندوق البريد الخادم * * Author Mzule * */الفئة العامة mailauthenticator يمتد المصادقة {/** * اسم المستخدم (صندوق بريد تسجيل الدخول) */سلسلة المستخدم الخاصة ؛ / *** كلمة المرور*/ كلمة مرور السلسلة الخاصة ؛ / *** تهيئة صندوق البريد وكلمة المرور** param صندوق بريد المستخدم* param password password*/ public mailauthenticator (string username ، string password) {this.username = username ؛ this.password = كلمة المرور ؛ } string getPassword () {return password ؛ } OverRide محمي passwordauthentication getPasswordAuthentication () {إرجاع كلمة مرور جديدة (اسم المستخدم ، كلمة المرور) ؛ } String getUserName () {return username ؛ } public void setPassword (سلسلة كلمة مرور) {this.password = password ؛ } public void setusername (string username) {this.userName = username ؛ }}2. فئة إرسال البريد الإلكتروني ، يتم تنفيذ الخطوات المتبقية في هذا الفصل. SimplEmail في الكود هو pojo الذي يلف موضوع ومحتوى البريد الإلكتروني. أشعر أنه ليس من المناسب تضمين كل من الموضوع والمحتوى في معلمة الطريقة ، لذلك قمت بتحميل هذه الطريقة. أيضًا ، لأنه يمكن حساب عناوين خادم SMTP لمعظم صناديق البريد بواسطة عناوين البريد الإلكتروني. من أجل البساطة ، يتم توفير مُنشئ لا يتطلب عنوان خادم SMTP.
حزمة com.mzule.simplemail ؛ استيراد java.util.list ؛ استيراد java.util.properties ؛ استيراد javax.mail.messagingexception ؛ استيراد javax.mail.session ؛ استيراد javax.mail.transport ؛ استيراد javax.internet.addressexception ؛ استيراد javax.mail.internet.internetaddress ؛ javax.nitter.internet.mimemessage ؛ /*** مرسل بريد بسيط ، يمكن إرساله إلى واحدة أو كتلة. * * Author mzule * */public class simplemailsender {/** * props file لإرسال البريد */خصائص عابرة خاصة خاصة props = system.getProperties () ؛ / *** التحقق من تسجيل الدخول إلى خادم البريد*/ antriendicator private mailauthenticator ؛ / ** * جلسة البريد الإلكتروني */ جلسة جلسة عابرة خاصة ؛ / ** * تهيئة مرسل البريد * * param smtphostname * عنوان خادم البريد SMTP * param username * username (العنوان) لإرسال البريد * password * Param fored لإرسال البريد الإلكتروني */ public simplemailsender (السلسلة النهائية smtphostname ، اسم المستخدم النهائي ، كلمة مرور السلسلة النهائية) } /*** قم بتهيئة مرسل البريد الإلكتروني** param اسم المستخدم* اسم المستخدم (العنوان) من رسائل البريد الإلكتروني التي ترسل البريد الإلكتروني ، واستخدم هذا لحل عنوان خادم SMTP* Param Password* Param لإرسال البريد الإلكتروني* /Public SimpleMailSender (اسم المستخدم النهائي ، كلمة مرور السلسلة النهائية) {// solve smtp server من خلال عنوان البريد الإلكتروني. + username.split ("@") [1] ؛ init (اسم المستخدم ، كلمة المرور ، smtphostname) ؛ } / ** * التهيئة * * param username * اسم المستخدم (العنوان) لإرسال البريد الإلكتروني * Param Password * password * param smtphostname * smtp عنوان المضيف * / private void init (username string ، string password ، string smtphostname) {// initialize props props ("mail.smtp.auth" ، " props.put ("mail.smtp.host" ، smtphostname) ؛ // تحقق من Australiticator = جديد mailauthenticator (اسم المستخدم ، كلمة المرور) ؛ // إنشاء جلسة جلسة = session.getInstance (الدعائم ، المصادقة) ؛ } / ** * إرسال بريد إلكتروني * * @Param المستلم * عنوان بريد إلكتروني المستلم * param الموضوع * موضوع البريد الإلكتروني * param content * محتوى البريد الإلكتروني * throws addressexception * throws messagingexception * / public void send (string string ، string content ، محتوى الكائن) يلقي العنوان ، MessagingException {// إنشاء mimeMeMeSage Message = sessage) // set sender message.setFrom (new InternetAddress (anthunticator.getusername ())) ؛ // تعيين message. // set topic message.SetSubject (character) ؛ // قم بتعيين Message Content Message.setContent (content.toString () ، "text/html ؛ charset = utf-8") ؛ // إرسال transport.send (رسالة) ؛ } / ** * بريد إلكتروني بالجملة * * @param المستفيدين * المستفيدين * param الموضوع * الموضوع * param content * content * throws addressexception * throws messagingexception * / public void send (قائمة <string> المستفيدين ، موضوع السلسلة ، محتوى الكائن) يلقي العنوان ، messagingException {// إنشاء mime mimeMeSage message = new mimemessage ؛ // قم بتعيين رسالة المرسل. // قم بتعيين المستلم النهائي int num = ultevients.size () ؛ InternetAddress [] عناوين = New InternetAddress [num] ؛ لـ (int i = 0 ؛ i <num ؛ i ++) {adgines [i] = new InternetAddress (stansients.get (i)) ؛ } message.setRecipients (recientType.to ، heades) ؛ // قم بتعيين message.setsubject (الموضوع) ؛ // قم بتعيين Mail Content Message.setContent (content.toString () ، "text/html ؛ charset = utf-8") ؛ // إرسال transport.send (رسالة) ؛ } / ** * إرسال بريد إلكتروني * * @Param المستلم * عنوان بريد إلكتروني المستلم * param mail * كائن البريد * throws addressexception * throws messagingException * / public void send (سلسلة مستلم ، بريد SimplEmail) يلقي العنوان ، MessagingException {revient ، mail.getSubject () ، mail.getcontent () ؛ } / ** * pulk email * * param المستفيدين * المستفيدين * param mail * كائن البريد * athrows addressexception * throws messagingException * / public void send (list <string> المستلمين ، البريد simplemail) يلقي العنوان ، messagingException {send (المستلمين ، mail.getsubject () ، mail.getentent () ؛ }}3. يمكن استدعاء مرسل صندوق البريد أعلاه بناء فئة المصنع . يمكن لفئة المصنع أن تتغلف عملية الإنشاء ، لذلك يصبح من المناسب للغاية الحصول على اسم مستخدم صندوق البريد من خلال قراءة ملف التكوين. تمت كتابة الرمز التالي عندما كنت أكتب وضع المراقب ، وقد أظهر لفترة وجيزة فئة المصنع.
حزمة com.mzule.dp.observer.factory ؛ استيراد com.mzule.dp.observer.constant.mailsendertype ؛ استيراد com.mzule.simplemail.simplemailsender ؛ /*** Outbox Factory** Author mzule**/public class mailsenderfactory {/*** service mailbox*/private static simplsender services = null ؛ / *** احصل على صندوق البريد** param نوع صندوق البريد* صندوق بريد RETURN الذي يتطابق مع النوع*/ public static simplesender getender (mailsendertype type) {if (type == mailsendertype.service) {if (servicesms == null) {servicesms = new SimpleMailsender ( } خدمات الإرجاع ؛ } إرجاع فارغ ؛ }}4. إرسال بريد إلكتروني أو رمز في وضع Observer Mode Demo ، Huh.
حزمة com.mzule.dp.observer.observer ؛ استيراد java.util.arraylist ؛ استيراد java.util.list ؛ استيراد java.util.Observable ؛ استيراد java.util.Observable ؛ استيراد java.util.Observable com.mzule.dp.observer.constant.mailsendertype ؛ استيراد com.mzule.dp.Observer.factory.mailsenderfactory ؛ import com.mzule.dp.observer.po.product ؛ import com.mzule.simplem.simplemailsender ؛ PROCALSPRICEPSERPSERVER PRODUCTPRICESSPRISTERS Observer {Override Public Void Update (Obconable OBJ ، Object Arg) {Product Product = null ؛ if (obj extryof product) {product = (product) obj ؛ } if (arg eastyof float) {float price = (float) arg ؛ انخفاض تعويم = product.getPrice () - السعر ؛ if (disped> 0) {// إرسال بريد إلكتروني simplemailsender sms = mailsenderfactory .getSender (mailsendertype.service) ؛ قائمة <Tring> المستفيدين = جديد ArrayList <String> () ؛ المستفيدين. المستفيدين. جرب {for (string steried: steter) {sms.send (المستلم ، "تغيير السعر" ، "العناصر التي تهتم بها إلى" + product.getName () + "تم تقليل السعر ، من" + product.getPrice () + "يوان إلى" + السعر + "يوان ، تم الوصول إلى" + انخفاض + "yuan rmb. }} catch (addressException e) {E.PrintStackTrace () ؛ } catch (messagingException e) {E.PrintStackTrace () ؛ }}}}} 5. تحقق مما إذا كان قد تم إرسال البريد الإلكتروني بنجاح.
ما سبق هو العملية الكاملة لإرسال رسائل البريد الإلكتروني Java ، وآمل أن تكون مفيدة لتعلم الجميع.