English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

بريد Java Spring

يقدم Spring framework العديد من الواجهات والفئات المفيدة لإرسال و استقبال البريد.

org.springframework.mail ال软件 المقدمة هي باقة الأساس التي توفر دعم البريد في Spring framework.

Spring Java Mail API

واجهات و الفئات التي تدعمها 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.

مثال على إرسال بريد عبر خادم Gmail في Spring

استخدم كلاً من كلاسيين 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


مثال على إرسال بريد باستخدام خادم المزود من الخادم في Spring

إذا كان لديك موقع خاص بك، يمكنك استخدام خادم البريد. 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); 
  }
     ...

مثال على Spring MimeMessagePreparator

يمكننا إرسال رسائل 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 مثال

يمكننا استخدام 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 متشابهة مع تلك المقدمة.