English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يقدم Spring framework العديد من الواجهات والفئات المفيدة لإرسال و استقبال البريد.
org.springframework.mail ال软件 المقدمة هي باقة الأساس التي توفر دعم البريد في Spring framework.
واجهات و الفئات التي تدعمها Spring Java Mail API في Spring framework كالتالي:
واجهة MailSender: هي واجهة الجذر. تقدم الوظائف الأساسية لإرسال بريد إلكتروني بسيط. واجهة JavaMailSender: هي واجهة فرعية لـ MailSender. تدعم رسائل MIME. يدعمها بشكل رئيسي فئة MimeMessageHelper الصفحات معًا لإنشاء JavaMail فئة MimeMessage ، بالإضافة إلى المرفقات وما إلى ذلك. يوصي spring framework باستخدام MimeMessagePreparator آلية لاستخدام هذه الواجهة. فئة JavaMailSenderImpl: تقدم تنفيذ واجهة JavaMailSender. يدعم رسائل MIME من JavaMail و رسائل SimpleMailMessages من Spring. فئة SimpleMailMessage: تستخدم لإنشاء بريد إلكتروني بسيط، بما في ذلك من، إلى، مراسل، موضوع و نص البريد الإلكتروني. واجهة MimeMessagePreparator: هي واجهة التدفق المطلوب لتحضير رسائل MIME من JavaMail. فئة MimeMessageHelper: هي مساعدته لمساعدة MIME. يدعم العناصر المدمجة، مثل الصور، المرفقات التقليدية للبريد الإلكتروني و نصوص HTML.
استخدم كلاً من كلاسيين Spring للبريد الإلكتروني:
SimpleMailMessage لإنشاء الرسائل. JavaMailSenderImpl لإرسال الرسائل.
تحتاج إلى إنشاء الملفات التالية لتسليم البريد الإلكتروني عبر إطار Spring.
MailMail.java applicationContext.xml Test.java تحتاج إلى تحميل ملفات mail.jar و activation.jar لتشغيل هذا المثال.
قم بتحميل mail.jar و Activation.jar أو زيارة موقع Oracle للحصول على أحدث إصدار.
1)MailMail.java
هذه هي فئة بسيطة تعريف خاصية mailSender. سيتم تقديم كائن MailSender لهذه الخاصية عند تشغيل البرنامج.
في طريقة sendMail()، نحن نقوم بإنشاء مثيل لـ SimpleMailMessage، ونخزن المعلومات (مثل، من، إلى، العنوان والمسار) في هذا الكائن.
في هذا المكان، نستخدم طريقة send() من واجهة MailSender لإرسال بريد بسيط.
package com.w3codebox; import org.springframework.mail.MailSender; import org.springframework.mail.SimpleMailMessage; public class MailMail{ private MailSender mailSender; public void setMailSender(MailSender mailSender) { this.mailSender = mailSender; } public void sendMail(String from, String to, String subject, String msg) { //إنشاء الرسالة SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(to); message.setSubject(subject); message.setText(msg); //إرسال الرسالة mailSender.send(message); } }
2)applicationContext.xml
في هذا ملف xml، قمنا بإنشاء bean لفئة JavaMailSenderImpl. نحتاج إلى تعريف قيم هذه الخصائص:
المضيف اسم المستخدم كلمة المرور javaMailProperties
نحن سنستخدم أيضًا خاصية mailSender لإنشاء bean لفئة MailMail. الآن، سنقوم بتعيين مثيل لـ JavaMailSenderImpl كقيمة لخاصية mailSender في فئة MailMail.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="smtp.gmail.com" /> <property name="username" value="[email protected]" /> <property name="password" value="yourgmailpassword"/> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">true</prop> <prop key="mail.smtp.socketFactory.port">465</prop> <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop> <prop key="mail.smtp.port">465</prop> </props> </property> </bean> <bean id="mailMail" class="com.w3codebox.MailMail"> <property name="mailSender" ref="mailSender" /> </bean> </beans>
3)Test.java
هذه الفئة تحصل على bean mailMail من ملف applicationContext.xml، وتدعو إلى ميثود sendMail في فئة MailMail.
package com.w3codebox; import org.springframework.beans.factory.*; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.*; public class Test { public static void main(String[] args) { Resource r=new ClassPathResource("applicationContext.xml"); BeanFactory b=new XmlBeanFactory(r); MailMail m=(MailMail)b.getBean("mailMail"); String sender="[email protected]";//كتابة id صاحب البريد الإلكتروني هنا String receiver="[email protected]";//كتابة id مستلم هنا m.sendMail(sender,receiver,"hi","welcome"); System.out.println("success"); } }
تحميل ملف jar الخاص بـ core و Java Mail تحميل mail.jar و activation.jar تغيير خصائص اسم المستخدم وكلمة المرور في ملف applicationContext.xml، وحدد معرف بريدك الإلكتروني وكلمة المرور. تغيير معرف البريد الإلكتروني المرسل و معرف مستلم البريد الإلكتروني في ملف Test.java. قم بترميز وتشغيل الكلاس Test
إذا كان لديك موقع خاص بك، يمكنك استخدام خادم البريد. MailMail.java و الكلاس Test سيكون نفسه. يجب عليك فقط تغيير معرف البريد الإلكتروني المرسل في ملف Test.java. يجب إجراء بعض التغييرات في ملف applicationContext.xml.
في ملف applicationContext.xml، نحن نستخدم:
mail.unitedsquaad.com كاسم الخادم. قم بتغييرها. [email protected] كاسم المستخدم. قم بتغييرها. xxxxx كلمة المرور. قم بتغييرها.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="mail.unitedsquaad.com" /> <property name="username" value="[email protected]" /> <property name="password" value="xxxxx" /> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">true</prop> </props> </property> </bean> <bean id="mailMail" class="MailMail"> <property name="mailSender" ref="mailSender" /> </bean> </beans>
يمكنك إرسال البريد إلى عدة مستلمين باستخدام فئة SimpleMailMessage. فئة SimpleMailMessage setTo(String []المستلمون)يستخدم هذا الطريقة لإرسال الرسالة إلى عدة مستلمين. دعونا نرى بعض الكود البسيط.
.... public void sendMail(String from, String[] to, String subject, String msg) { //إنشاء الرسالة SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(to); //مرور مجموعة من المستلمين message.setSubject(subject); message.setText(msg); //إرسال الرسالة mailSender.send(message); } ...
يمكننا إرسال رسائل mime باستخدام واجهة MimeMessagePreparator. لديها طريقة prepare(MimeMessage message).
دعونا نرى بعض الكود البسيط لإرسال رسالة mime.
import javax.mail.Message; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessagePreparator; public class MailMail{ private JavaMailSender mailSender; public void setMailSender(JavaMailSender mailSender) { this.mailSender = mailSender; } public void sendMail(final String from, final String to, final String subject, final String msg) { MimeMessagePreparator messagePreparator = new MimeMessagePreparator() { public void prepare(MimeMessage mimeMessage) throws Exception { mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); mimeMessage.setFrom(new InternetAddress(from)); mimeMessage.setSubject(subject); mimeMessage.setText(msg); } }; mailSender.send(messagePreparator); } }
ملفات applicationContext.xml و Test.java متشابهة مع تلك المقدمة.
يمكننا استخدام MimeMessageHelper لارسال رسائل mime تحتوي على مرفقات بمساعدة Spring. يُنصح باستخدام MimeMessagePreparator.
دعونا نرى كود بسيط لارسال رسالة mime تحتوي على مرفقات (صور).
import java.io.File; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; public class MailMail{ private JavaMailSender mailSender; public void setMailSender(JavaMailSender mailSender) { this.mailSender = mailSender; } public void sendMail(final String from, final String to, final String subject, final String msg) { try{ MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(to); helper.setSubject(subject); helper.setText(msg); // ربط الملف FileSystemResource file = new FileSystemResource(new File("c:/rr.jpg")); helper.addAttachment("mybrothermage.jpg", file); // سيتم إرسال الصورة تحت هذا الاسم mailSender.send(message); catch(MessagingException e){e.printStackTrace();} } }
ملفات applicationContext.xml و Test.java متشابهة مع تلك المقدمة.