استخدم Javamail لإرسال رسائل البريد الإلكتروني ، حزمة JAR المطلوبة (يرجى تنزيل الملف المصدر لـ Javamail ، صفحة التنزيل الرسمية:
mailapi.jar. يحدد واجهة واجهة برمجة التطبيقات المستخدمة لإرسال واستقبال رسائل البريد الإلكتروني ؛
SMTP.JAR. يحتوي على الفصل المستخدم لإرسال رسائل البريد الإلكتروني ؛
pop3.jar. يتضمن الفصل المستخدم لتلقي رسائل البريد الإلكتروني ؛
البروتوكول الذي نستخدمه عادة لإرسال رسائل البريد الإلكتروني هو بروتوكول SMTP ، والبروتوكول الذي نستخدمه لقبول رسائل البريد الإلكتروني هو بروتوكول POP3. أو ، نضيف Mail.jar مباشرة إلى المشروع ، والذي يحتوي على جميع الواجهات والفئات لإرسال واستقبال Java.
الطبقات الشائعة الاستخدام:
إرسال بريد إلكتروني
أدناه ، سأدرج أولاً أبسط مثال اختبار صغير لإرسال رسائل البريد الإلكتروني في Java:
استيراد java.util.properties ؛ استيراد javax.mail.address ؛ استيراد javax.mail.message ؛ استيراد javax.mail.messagingexception ؛ استيراد javax.mail.session ؛ استيراد javax.mail.transport ؛ استيراد javax.mail.internet.internetaddress ؛ استيراد javax.mail.internet.mimessage ؛ /** * * QQ (mail.qq.com): Pop3 Server (Port 995) SMTP Server (المنفذ 465 أو 587). * */ public class demo1 {/ ** * param args * throws messagingException */ public static void main (string [] args) remsageException {String sendusername = "[email protected]" ؛ String sendPassword = "PWD" ؛ خصائص الخصائص = خصائص جديدة () ؛ properties.setProperty ("mail.smtp.auth" ، "true") ؛ // يحتاج الخادم إلى مصادقة الخصائص. session.setDebug (true) ؛ // توافق على طباعة معلومات المحادثة مع الخادم على وحدة التحكم في رسالة رسالة الخيط الحالية = mimemessage الجديد (الجلسة) ؛ // إنشاء رسالة message.settext المرسلة ("مرحبًا ، أنا بطل. Transport.connect ("smtp.126.com" ، 25 ، sendusername ، sendPassword) ؛ // قم بتوصيل Sender Server Transport.SendMessage (الرسالة ، العنوان الجديد [] {new InternetAddress ("[email protected]")}) ؛ }}بشكل عام ، نستخدم Authenticator لتغليف اسم المستخدم وكلمة المرور ، وهو أمر غير شفاف! لذا:
استيراد javax.mail.Authenticator ؛ استيراد javax.mail.message ؛ استيراد javax.mail.messagingexception ؛ استيراد javax.mail.passwordauthentication ؛ استيراد javax.mail.session ؛ استيراد javax.mail.transport ؛ استيراد javax.mail.internet.address ؛ استيراد javax.mail.internet.internetaddress ؛ استيراد javax.mail.internet.mimessage ؛ استيراد junit.framework.testcase ؛ /*** javamail إرسال البريد الإلكتروني* Author Championship Wong* message.addrecipient (message.recipient stenter ، عنوان العنوان) ؛ حدد أدوار المستلم والمستلم عند إرسال رسالة بريد إلكتروني* message.RecipientType.To المستلم* message.RecipientType.cc CC ، أي أنسخ شخص إلى شخص آخر عند إرسال بريد إلكتروني ، دون الرد! ومع ذلك ، يمكن للمستلم أعلاه معرفة من قمت بنسخه إلى * message.RecipientType.BCC يرسله سراً ، كما أنه يرسل نسخة إلى شخص آخر عند إرسال بريد إلكتروني. ومع ذلك ، على عكس ما ورد أعلاه ، لا يمكن للمستلم معرفة من الذي أعطيته سراً إلى * *// demo2 من الفئة العامة يمتد testcase {private static string sendusername = "[email protected]" ؛ "SMTP" ؛ // المنفذ المستخدم لإرسال البريد الأساسي للبريد الخاص STRINGHOSTADDRESS = "SMTP.126.com" ؛ // عنوان الخادم المستخدم لإرسال البريد الإلكتروني اختبار الفراغ العام () يلقي العنوان ، MessagingException {خصائص الخصائص = خصائص جديدة () ؛ properties.setProperty ("mail.smtp.auth" ، "true") ؛ // يحتاج الخادم إلى مصادقة الخصائص. Session.getInstance (خصائص ، مصادقة جديدة () {محمية PassworeAuthentication getPasswordauthentication () {return new PassworeAuthentication (sendusername ، sendPassword) ؛}}) ؛ Session.setDebug (true) ؛ // طباعة معلومات في الوقت الفعلي حول إرسال البريد في رسالة رسالة الخلفية = mimemessage (الجلسة) الجديدة ؛ message.setfrom (New InternetAddress ("[email protected]")) ؛ message.setsubject ("Demo2JavAcode إرسال اختبار البريد الإلكتروني ، باستخدام المصادقة")) .parse ("[email protected]")) ؛ // CC Message .setContent ("<span style =" font-size: 20px ؛ color: #ffccff "mce_style =" font-size: 20px ؛ color: #ffccff "> ef to eveld it provives stives tas rective is rective there te "النص/html ؛ charset = gbk") ؛ Transport.send (رسالة) ؛ // إرسال البريد الإلكتروني}} نرسل بريدًا إلكترونيًا معقدًا نسبيًا ، بما في ذلك المرفقات والصور والنصوص:
استيراد java.io.filenotfoundException ؛ استيراد java.io.fileOutputStream ؛ استيراد java.io.ioException ؛ استيراد java.io.outputStream ؛ استيراد java.util.properties ؛ استيراد javax.activation.datahandler ؛ استيراد javax.activation.datasource ؛ استيراد javax.activation.filedatasource ؛ استيراد javax.mail.Authenticator ؛ استيراد javax.mail.messagingexception ؛ استيراد javax.mail.passwordauthentication ؛ استيراد javax.mail.session ؛ استيراد javax.mail.transport ؛ استيراد javax.mail.message.recipienttype ؛ استيراد javax.mail.internet.internetaddress ؛ استيراد javax.mail.internet.mimebodypart ؛ استيراد javax.mail.internet.mimessage ؛ استيراد javax.mail.internet.mimemultipart ؛ استيراد javax.mail.internet.mimeutility ؛ /** * * Author Administrator Mr XP.Wang * Mimemultipart الحاوية العامة للبريد الإلكتروني متعددة ، والتي تحدد طرق إضافة وحذف أجزاء مختلفة من البريد الإلكتروني. * ومع ذلك ، فهي فئة مجردة ، ويجب استخدام mimemultipart من الفئة الفرعية الخاصة به في كائن mimemessage* mimebodypart هي فئة فرعية من bodypart المستخدمة خصيصًا في mimemessage. يمثل كائن MimeBodyPart A * كل جزء من كائن mimemultipart * mimeutility.encodetext (السلسلة CN) يستخدم لحل مشكلة الكود المشوهة الصيني في معلومات الرأس في البريد الإلكتروني *// public class demo3_test {public static void main (string [] args) استثناء {proberies properies =) ؛ properties.setProperty ("mail.smtp.auth" ، "true") ؛ // يحتاج الخادم إلى مصادقة الخصائص. Session.getInstance (خصائص ، مصادقة جديدة () {String sendusername = "[email protected]" ؛ String sendPassword = "PWD" ؛ محمية PasswordAuthentication getPasswordauthentication () {إرجاع كلمة مرور جديدة (sendusername ، sendpassword) ؛}}) ؛ session.setDebug (true) ؛ mimemessage msg = new mimemessage (جلسة) ؛ // إعلان جسم البريد الإلكتروني msg.setfrom (new InternetAddress ("/" "+mimeutility.encodetext (" MR XP.Wang ")+"/"<[email protected]>")) ؛ msg.setsubject ("هذا هو أول بريد إلكتروني معقد لي") ؛ // قم بتعيين موضوع البريد الإلكتروني msg.setRecipients (mimemessage.recipienttype.to ، InternetAddress.Parse (mimeutility.encodetext ("wang Xiangpan ")+" <[email protected]> ، "+mimeutility.encodetext (" sanmao ")+" <[email protected]> ")) ؛ mimemultipart msgmultipart = new mimemultipart ("mixed") ؛ mimebodypart () ؛ // نص البريد الإلكتروني ، مزيج (صورة + نص) // قم بتعيين المرفق والنص في هذا الجسم عبر البريد الإلكتروني msgmultipart.addbodypart (atch1) ؛ msgmultipart.addbodypart (atch2) ؛ msgmultipart.addbodypart (المحتوى) ؛ // قم بتعيين أول بيانات مرفقات DS1 = New FileDataSource ("F: /ACCP5.0/file/ssh configuration.txt atch1.setFilename ("ssh.txt") ؛ // قم بتعيين Second DataSource DS2 = New FileDataSource ("Resource/48.jpg") ؛ // حدد مصدر بيانات Datahandler Dhahandler Dh2 = New Datahandler (DS2) ؛ // معلومات المرفق exkn.setdatahandler (dh2) ؛ // قم بتعيين نص البريد الإلكتروني mimemultipart bodymultipart = new mimemultipart ("ذات الصلة") ؛ // content. mimebodypart gifpart = new mimebodypart () ؛ bodymultipart.addbodypart (htmlpart) ؛ bodymultipart.addbodypart (gifpart) ؛ GIFDS DataSource = FileDataSource الجديد ("Resource/48.jpg") ؛ // قم بتعيين صورة النص Datahandler GIFDH = New Datahandler (GIFDS) ؛ gifpart.setheader ("محتوى محتوى" ، "http://mimg.126.net/logo/126logo.gif") ؛ gifpart.setdatahandler (gifdh) ؛ // اضبط صورة النص htmlpart.setContent ("أنا هنا فقط لصنع صلصة الصويا ، هذه هي صورة صورتي! <img src ="/"mce_src ="/"http://mimg.126.net/logo "text/html ؛ charset = gbk") ؛ // قم بتعيين النص msg.savechanges () ؛ // حفظ البريد الإلكتروني // حفظ البريد الإلكتروني كملف OutputStream Ops = جديد fileOutputStream ("c: /users/administrator/desktop/test.eml") ؛ msg.writeto (OPS) ؛ ops.close () ؛ Transport.Send (MSG) ؛ }} تلقي رسائل البريد الإلكتروني
مثال: تقوم روز بجمع آخر البريد الإلكتروني.
استيراد java.util.date ؛ استيراد java.util.properties ؛ استيراد javax.mail.folder ؛ استيراد javax.mail.message ؛ import javax.mail.messagingexptix Main (String [] args) {String protocol = "pop3" ؛ منطقية ISSSL = صواب ؛ string host = "pop.163.com" ؛ INT PORT = 995 ؛ String username = "[email protected]" ؛ كلمة مرور السلسلة = "Rose" ؛ خصائص الدعائم = خصائص جديدة () ؛ props.put ("mail.pop3.ssl.enable" ، ISSSL) ؛ props.put ("mail.pop3.host" ، Host) ؛ props.put ("mail.pop3.port" ، port) ؛ جلسة الجلسة = session.getDefaultInstance (الدعائم) ؛ متجر المتجر = فارغ ؛ مجلد المجلد = فارغ ؛ حاول {store = session.getStore (protocol) ؛ store.connect (اسم المستخدم ، كلمة المرور) ؛ المجلد = store.getFolder ("صندوق الوارد") ؛ Folder.Open (folder.read_only) ؛ int size = folder.getMessageCount () ؛ رسالة رسالة = Folder.getMessage (الحجم) ؛ سلسلة من = message.getFrom () [0] .ToString () ؛ سلسلة موضوع = message.getSubject () ؛ تاريخ تاريخ = message.getSentDate () ؛ System.out.println ("من:" + من) ؛ System.out.println ("الموضوع:" + موضوع) ؛ System.out.println ("التاريخ:" + التاريخ) ؛ } catch (nosuchproviderexception e) {E.PrintStackTrace () ؛ } catch (messagingException e) {E.PrintStackTrace () ؛ } أخيرًا {try {if (folder! = null) {folder.close (false) ؛ } if (store! = null) {store.close () ؛ }} catch (messagingException e) {E.PrintStackTrace () ؛ }} system.out.println ("تم استلامه!") ؛ }}