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

إرسال بريد إلكتروني Servlet

إرسال بريد إلكتروني باستخدام Servlet بسيط جدًا، ولكن يجب عليك أولاً تثبيت JavaMail API و Java Activation Framework) JAF

  • يمكنك تنزيل أحدث إصدار من Java من الموقع التالي JavaMail، افتح الصفحة اليمنى، ستجد التنزيلات الرابط، انقر عليه للتنزيل.

  • يمكنك تنزيل أحدث إصدار من Java من الموقع التالي JAF (الإصدار 1.1.1)

يمكنك أيضًا استخدام روابط التنزيل المتاحة على هذا الموقع:

تنزيل وتفريغ هذه الملفات، في الدليل الأعلى المكتشف حديثًا، ستجد بعض ملفات jar لتلك التطبيقات. تحتاج إلى تثبيت mail.jar و activation.jar أضف ملف إلى CLASSPATH الخاص بك.

إرسال بريد إلكتروني بسيط

النموذج التالي سيقوم بإرسال بريد إلكتروني بسيط من جهاز الكمبيوتر الخاص بك. هنا يتم افتراض أنكالمستضيف المحليمصاب بالإنترنت، ودعم إرسال البريد الإلكتروني. تأكد أيضًا من أن جميع ملفات jar الخاصة بـ Java Email API و JAF متاحة في CLASSPATH.

// اسم الملف SendEmail.java
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
public class SendEmail extends HttpServlet{
    
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // معرف البريد الإلكتروني للمستلم
      String to = "[email protected]";
 
      // معرف البريد الإلكتروني للمرسل
      String from = "[email protected]";
 
      // افتراضًا أنك تقوم بإرسال بريد إلكتروني من المستضيف المحلي
      String host = "localhost";
 
      // الحصول على خصائص النظام
      Properties properties = System.getProperties();
 
      // تعيين خادم البريد
      properties.setProperty("mail.smtp.host", host);
 
      // الحصول على entity Session الافتراضية
      Session session = Session.getDefaultInstance(properties);
      
      // تعيين نوع محتوى الاستجابة
      response.setContentType("text/html;charset=UTF-8");
      PrintWriter‌out‌= ‌response.getWriter();
      try{
         // ‌创建一个默认的‌MimeMessage‌对象
         MimeMessage‌message‌= ‌new‌ MimeMessage(session);
         // ‌设置‌From:‌header‌field‌of‌the‌header.
         message.setFrom(new‌ InternetAddress(from));
         // ‌设置‌To:‌header‌field‌of‌the‌header.
         message.addRecipient(Message.RecipientType.TO,
                                  new‌ InternetAddress(to));
         // ‌设置‌Subject:‌header‌field
         message.setSubject(‌"This‌is‌the‌Subject‌Line!");
         // الآن يتم تعيين الرسالة الفعلية
         message.setText("هذا هو الرسالة الفعلية");
         // ‌发送消息
         Transport.send(message);
         String‌title‌= ‌"发送电子邮件";
         String res = "تم إرسال الرسالة بنجاح...";
         String docType = "<!DOCTYPE html> \n";
         out.println(docType +
         "<html>\n"
         "<head><title>" + title + "</title></head>\n"
         "<body bgcolor=\"#f0f0f0\">\n"
         "<h1 align=\"center\">" + title + "</h1>\n" +
         "<p align=\"center\">" + res + "</p>\n" +
         "</body></html>";
      }
         mex.printStackTrace();
      }
   }
}

الآن دعونا ننقح Servlet السابق، ونقوم بإنشاء المدخل التالي في ملف web.xml:

....
 <servlet>
     <servlet-name>SendEmail</servlet-name>
     <servlet-class>SendEmail</servlet-class>
 </servlet>
 
 <servlet-mapping>
     <servlet-name>SendEmail</servlet-name>
     <url-pattern>/SendEmail</url-pattern>
 </servlet-mapping>
....

الآن، من خلال زيارة URL http://localhost:8080/SendEmail، يمكنك طلب Servlet هذا. سيتم إرسال بريد إلكتروني إلى معرف بريد الإلكتروني المحدد [email protected]، سيتم عرض الاستجابة التالية:

إرسال بريد إلكتروني

تم إرسال الرسالة بنجاح...

إذا كنت ترغب في إرسال بريد إلكتروني إلى عدة مستلمين، فاستخدم الطريقة التالية لتعيين عدة معرفات بريد إلكتروني:

void addRecipients(Message.RecipientType type, 
                   Address[] addresses)
throws MessagingException

هذا هو وصف المعلمات:

  • type:سيتم تعيين هذا كـ TO أو CC أو BCC. هنا، CC تعني نسخة، و BCC تعني نسخة سرية. على سبيل المثال Message.RecipientType.TO

  • addresses:هذا هو مجموعة من معرفات بريد الإلكتروني. عند تحديد معرف بريد الإلكتروني، يجب استخدام طريقة InternetAddress().

إرسال بريد إلكتروني HTML

في المثال التالي، سيتم إرسال بريد إلكتروني بتنسيق HTML من جهازك.المستضيف المحليمصاب بالإنترنت، ودعم إرسال البريد الإلكتروني. تأكد أيضًا من أن جميع ملفات jar الخاصة بـ Java Email API و JAF متاحة في CLASSPATH.

هذا المثال مشابه جدًا للشكل السابق، ولكن هنا نستخدم طريقة setContent() لضبط الثانية كـ "text/html"، التي تُستخدم لتعيين أن المحتوى HTML يحتوي على الرسالة.

باستخدام هذا المثال، يمكنك إرسال محتوى HTML بلا حدود في الحجم.

// اسم الملف SendEmail.java
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
public class SendEmail extends HttpServlet{
    
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // معرف البريد الإلكتروني للمستلم
      String to = "[email protected]";
 
      // معرف البريد الإلكتروني للمرسل
      String from = "[email protected]";
 
      // افتراضًا أنك تقوم بإرسال بريد إلكتروني من المستضيف المحلي
      String host = "localhost";
 
      // الحصول على خصائص النظام
      Properties properties = System.getProperties();
 
      // تعيين خادم البريد
      properties.setProperty("mail.smtp.host", host);
 
      // الحصول على entity Session الافتراضية
      Session session = Session.getDefaultInstance(properties);
      
      // تعيين نوع محتوى الاستجابة
      response.setContentType("text/html;charset=UTF-8");
      PrintWriter‌out‌= ‌response.getWriter();
      try{
         // ‌创建一个默认的‌MimeMessage‌对象
         MimeMessage‌message‌= ‌new‌ MimeMessage(session);
         // ‌设置‌From:‌header‌field‌of‌the‌header.
         message.setFrom(new‌ InternetAddress(from));
         // ‌设置‌To:‌header‌field‌of‌the‌header.
         message.addRecipient(Message.RecipientType.TO,
                                  new‌ InternetAddress(to));
         // ‌设置‌Subject:‌header‌field
         message.setSubject(‌"This‌is‌the‌Subject‌Line!");
         // تعيين الرسالة الفعلية HTML، حجم المحتوى غير محدود
         message.setContent("<h1>هذا هو الرسالة الفعلية</h1>",
                            "text/html");
         // ‌发送消息
         Transport.send(message);
         String‌title‌= ‌"发送电子邮件";
         String res = "تم إرسال الرسالة بنجاح...";
         String docType = "<!DOCTYPE html> \n";
         out.println(docType +
         "<html>\n"
         "<head><title>" + title + "</title></head>\n"
         "<body bgcolor=\"#f0f0f0\">\n"
         "<h1 align=\"center\">" + title + "</h1>\n" +
         "<p align=\"center\">" + res + "</p>\n" +
         "</body></html>";
      }
         mex.printStackTrace();
      }
   }
}

تأكد من تجميع وتشغيل Servlet المذكور أعلاه لإرسال رسالة HTML عبر عنوان البريد الإلكتروني المحدد.

إرسال مرفق في بريد إلكتروني

في هذا المثال، سيتم إرسال بريد إلكتروني يحتوي على مرفق من جهازك. هنا افترض أنكالمستضيف المحليمصاب بالإنترنت، ودعم إرسال البريد الإلكتروني. تأكد أيضًا من أن جميع ملفات jar الخاصة بـ Java Email API و JAF متاحة في CLASSPATH.

// اسم الملف SendEmail.java
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
public class SendEmail extends HttpServlet{
    
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // معرف البريد الإلكتروني للمستلم
      String to = "[email protected]";
 
      // معرف البريد الإلكتروني للمرسل
      String from = "[email protected]";
 
      // افتراضًا أنك تقوم بإرسال بريد إلكتروني من المستضيف المحلي
      String host = "localhost";
 
      // الحصول على خصائص النظام
      Properties properties = System.getProperties();
 
      // تعيين خادم البريد
      properties.setProperty("mail.smtp.host", host);
 
      // الحصول على entity Session الافتراضية
      Session session = Session.getDefaultInstance(properties);
      
      // تعيين نوع محتوى الاستجابة
      response.setContentType("text/html;charset=UTF-8");
      PrintWriter‌out‌= ‌response.getWriter();
       try{
         // ‌创建一个默认的‌MimeMessage‌对象
         MimeMessage‌message‌= ‌new‌ MimeMessage(session);
 
         // ‌设置‌From:‌header‌field‌of‌the‌header.
         message.setFrom(new‌ InternetAddress(from));
 
         // ‌设置‌To:‌header‌field‌of‌the‌header.
         message.addRecipient(Message.RecipientType.TO,
                                  new‌ InternetAddress(to));
 
         // ‌设置‌Subject:‌header‌field
         message.setSubject(‌"This‌is‌the‌Subject‌Line!");
 
         // ‌创建消息部分 
         BodyPart‌messageBodyPart‌= ‌new‌ MimeBodyPart();
 
         // ‌填写消息
         messageBodyPart.setText(‌"This‌is‌message‌body");
         
         // ‌创建一个多部分消息
         Multipart‌multipart‌= ‌new‌ MimeMultipart();
 
         // ‌设置文本消息部分
         multipart.addBodyPart(messageBodyPart);
 
         // ‌第二部分是附件
         messageBodyPart‌= ‌new‌ MimeBodyPart();
         String‌filename‌= ‌"file.txt";
         DataSource‌source‌= ‌new‌ FileDataSource(filename);
         messageBodyPart.setDataHandler(new‌ DataHandler(source));
         messageBodyPart.setFileName(filename);
         multipart.addBodyPart(messageBodyPart);
 
         // ‌发送完整的消息部分
         message.setContent(multipart‌);
 
         // ‌发送消息
         Transport.send(message);
         String‌title‌= ‌"发送电子邮件";
         String res = "تم إرسال البريد الإلكتروني بنجاح...";
         String docType = "<!DOCTYPE html> \n";
         out.println(docType +
         "<html>\n"
         "<head><title>" + title + "</title></head>\n"
         "<body bgcolor=\"#f0f0f0\">\n"
         "<h1 align=\"center\">" + title + "</h1>\n" +
         "<p align=\"center\">" + res + "</p>\n" +
         "</body></html>";
      }
         mex.printStackTrace();
      }
   }
}

أعد تجميع وتشغيل Servlet المذكور أعلاه لإرسال رسالة تحتوي على مرفق مرفق إلى عنوان البريد الإلكتروني المحدد.

جزء التحقق من الهوية للمستخدم

إذا كنت بحاجة إلى تقديم معرف المستخدم وكلمة المرور للتحقق من الهوية لخادم البريد الإلكتروني، يمكنك تعيين الخصائص التالية:

 props.setProperty("mail.user", "myuser");
 props.setProperty("mail.password", "mypwd");

جزء المتبقي من آلية إرسال البريد الإلكتروني يجب أن يكون متطابقًا مع الشرح السابق.