إرسال متعددة والتحقق من المستخدم
سيقوم ما يلي أولاً بتقديم كيفية إرسال رسائل البريد الإلكتروني إلى العديد من المستلمين وكيفية استخدام كائن المصادقة لتحقيق مصادقة المستخدم.
عند تحديد مستلم ، يمكن أن يكون لدينا طريقتان لتحديده. حددت المدونة السابقة مؤقتًا المستلم عند إرسال بريد إلكتروني ، ويمكن تحديدها فعليًا في كائن الرسالة.
message.addrecipient (message.RecipientType.to ، New InternetAddress ("[email protected]")) ؛ هذا فقط لإرساله إلى مستلم واحد ، ولكن كيفية التعامل معه مع العديد من المستلمين؟ هناك أيضًا طريقتان للتعامل معها.
1. عند إرسال رسائل البريد الإلكتروني ، تستخدم طريقة SendMessage () للنقل صفيفًا لتحديد المستلم. في هذا الوقت ، نحتاج فقط إلى إضافة المزيد من عناوين المستلم لإكمالها.
2. عند استخدام كائن الرسالة لإضافة المستلمين ، يمكننا استخدام طريقة Parse (سلسلة السلسلة) لكائن InternetAddress. تقوم هذه الطريقة بإرجاع مجموعة InternetAddress ، والتي يمكن إرسالها أيضًا إلى العديد من المستلمين.
نحن نعلم أنه عند تطوير Javamail ، يجب علينا إجراء التحقق من التفويض. الغرض من التحقق من التفويض هو منع الآخرين من إرسال رسائل البريد الإلكتروني بشكل تعسفي وتقليل توليد البريد العشوائي.
يمكننا التحقق عند الحصول على كائن الجلسة. هناك طريقتان في كائن الجلسة:
كلتا الطريقتين لها مصادقة معلمة شائعة ، وهو كائن مصادقة. يساعد كائن المصادقة المستخدمين على التحقق من المعلومات وإكمال التحقق من التفويض. هناك طريقة getPasswordauthentication () في كائن المصادقة. هذه الطريقة تُرجع كائن كلمة مرور. هناك طريقتان في كائن كلمة المرور: getPassword () و getusername () وهذا يعني أننا نغلف كلمة المرور واسم المستخدم في كائن كلمة المرور. من خلال هاتين الطريقتين ، يمكننا الحصول على اسم المستخدم وكلمة المرور. يمكن إكمال التحقق من معلومات المستخدم.
الأمثلة على النحو التالي:
الفئة العامة javamail_02 {public static void main (string [] args) يلقي الاستثناء {properties props = new properties () ؛ props.setProperty ("mail.smtp.auth" ، "true") ؛ props.setProperty ("mail.transport.protocol" ، "smtp") ؛ props.setProperty ("mail.host" ، "smtp.163.com") ؛ جلسة الجلسة = session.getInstance (الدعائم ، المصادقة الجديدة () {محمية كلمة مرور getPasswordauthentication () {return new passwordauthentication ("******" ، "*********") ؛}}) ؛ session.setDebug (true) ؛ رسالة msg = new mimemessage (جلسة) ؛ msg.setfrom (New InternetAddress ("[email protected]")) ؛ msg.setsubject ("برنامج اختبار javamail ...") ؛ msg.setContent ("<span style = 'color: red'> هذا هو برنامج اختبار javamail الثاني .... </span>" ، "text/html ؛ charset = gbk") ؛ //msg.setRecipients(RecipientType.to ، عنوان جديد [] {new InternetAddress ("1111 QQ.com") ، New InternetAddress ("[email protected]")}) ؛ msg.setRecipients (recientType.to ، InternetAddress.Parse ("[email protected] ، [email protected]") ؛ Transport.Send (MSG) ؛ }} البريد الإلكتروني مع الصور والمرفقات
في رسائل البريد الإلكتروني الفعلية ، نشهد عمومًا هياكل بريد إلكتروني أكثر تعقيدًا ، مثل المرفقات والصور والأغاني ، إلخ. في هذا الوقت ، يجب أن يكون لدينا فهم واضح لهيكل البريد الإلكتروني. قبل تطوير البريد الإلكتروني المركب ، تحتاج إلى فهم معين لهيكل رسائل البريد الإلكتروني المركبة.
تعرض الصورة أعلاه الهيكل العام للبريد الإلكتروني المركب ، ويمكننا أن نرى أن بريدًا إلكترونيًا معقدًا يتكون من أجزاء متعددة. يحتوي على رأس وجسم ، لكن الجسم ليس بسيطًا كما كان من قبل ، ولكنه يتكون من عدة أجزاء. يحتاج الرأس إلى أن يكون بمثابة مؤشر ، والذي يحتاج إلى شرح نوع الفاصل الذي يجب استخدامه لفصل النص وما هي العلاقات المركب المستخدمة بين أجزاء النص. بالنسبة للبريد الإلكتروني أعلاه ، يتكون من ثلاثة أجزاء ، ولكل منها رأسها وجسمها ، ويتألف الجزء الأول أيضًا من جزأين.
العلاقة الجمع بين البريد الإلكتروني المركب:
هناك العديد من المجموعات بين أجزاء النص الرئيسية. العلاقة الجمع هي كما يلي:
البديل: حدد العلاقة. النص العادي أعلاه والنص التشعبي هو علاقة الاختيار.
ذات الصلة: علاقة تابعة. إذا كان نص النص التشعبي أعلاه يعرض صورة ، فعننا نرسل بريدًا إلكترونيًا ، فيجب أن ندرج الصورة في البريد الإلكتروني ، وهو ما يسمى المورد المدمج ، وهو النص التشعبي. لذلك هناك علاقة بين الاثنين.
مختلط: علاقة مختلطة. تشكل النص العادي والنص التشعبي والموارد المدمجة ككلًا ويتم تمييزها مع المرفقات ، وهناك علاقة مختلطة بين الاثنين.
API لهيكل تنظيم البريد المركب:
يمثل فئة mimemessage البريد الإلكتروني بأكمله.
يمثل فئة MimebodyPart رسالة MIME للبريد الإلكتروني.
تمثل فئة mimemultipart رسالة MIME مجتمعة تتكون من رسائل MIME متعددة.
المثال التالي: يحتوي البريد الإلكتروني على اثنين من المرفقات ، ويتضمن الجزء الرئيسي نصًا عاديًا ونصًا تشعبيًا ، ويعني النص التشعبي عرض صورة. رمز المصدر كما يلي:
الفئة العامة javamail_03 {public static void main (string [] args) يلقي الاستثناء {properties props = new properties () ؛ props.setProperty ("mail.smtp.auth" ، "true") ؛ props.setProperty ("mail.transport.protocol" ، "smtp") ؛ props.setProperty ("mail.host" ، "smtp.163.com") ؛ جلسة الجلسة = session.getInstance (الدعائم ، Australiticator New () {محمية PassworeAuthentication getPasswordAuthentication () {إرجاع كلمة مرور جديدة ("***" ، "******") ؛}}) ؛ رسالة رسالة = mimemessage الجديد (الجلسة) ؛ message.setsubject ("برنامج اختبار Javamail الثالث") ؛ message.setFrom (New InternetAddress ("/" "+mimeutility.encodetext (" Chen Ming ")+"/"<[email protected]>")) ؛ message.setRecipients (recientType.to ، عنوان جديد [] {new InternetAdDress ("[email protected]")}) ؛ // mail text mimemultipart multipart = new mimemultipart ("mixed") ؛ message.setContent (multipart) ؛ /** يتضمن محتوى الرسالة* هيئة بريد إلكتروني واحدة ومرفقان*/ mimeBodyPart content = new MimebodyPart () ؛ // Content MimebodyPart atche1 = new MimebodyPart () ؛ // المرفق 1 mimebodypart include2 = new mimebodypart () ؛ // المرفق 2 // أضف محتوى البريد الإلكتروني إلى multipart.addbodypart (content) ؛ multipart.addbodypart (atch1) ؛ multipart.addbodypart (atch2) ؛ // تعيين مرفق 1 DataSource ds1 = new FileDataSource ("g: // ebook // oracle password.txt") ؛ Datahandler DH1 = New Datahandler (DS1) ؛ include1.setDatahandler (DH1) ؛ include1.setFilename ("oracle.txt") ؛ // SET APPANCEMNENT 2 DATASOURCE DS2 = New FileDataSource ("G: //ebook//account.txt") ؛ Datahandler DH2 = New Datahandler (DS2) ؛ ancles2setDatahandler (DH2) ؛ include2.setFilename (mimeutility.encodetext ("account.txt")) ؛ /** تعيين المحتوى (النص) ---- هو جسم معقد* بما في ذلك نص HTML وعرض صورة*/ mimemultipart bodymultipart = new mimemultipart ("ذات الصلة") ؛ content.setContent (bodymultipart) ؛ // بناء النص mimebodypart htmlbody = new mimebodypart () ؛ mimebodypart gifbody = new mimebodypart () ؛ bodymultipart.addbodypart (htmlbody) ؛ bodymultipart.addbodypart (gifbody) ؛ // قم بتعيين GIFDS DataSource = FileDataSource الجديد ("F: //picture//picture//4.jpg") ؛ Datahandler GIFDH = New Datahandler (GIFDS) ؛ gifbody.setdatahandler (GIFDH) ؛ gifbody.setheader ("معرف المحتوى" ، "<"+gifds.getName ()+">") ؛ //gifbody.setheader("content-location "،" http://www.itcast.cn/logo.gif ") ؛ // قم بتعيين HTML Body HtmlBody.setContent ("<span style = 'اللون: أحمر ؛ حجم الخط: 16px'> هذا هو اختبار javamail الثالث الخاص بي! ويشمل المرفقات والصور ، وهو معقد بعض الشيء ... </span> <br>" + "الصورة المعروضة <img src = 'cid: 4.jpg'/>" ، message.savechanges () ؛ // إنشاء البريد الإلكتروني Transport.send (message) ؛ }}