تعلم كيفية إرسال و إستقبال البريد الالكترونى مع المرفقات و تنسيق html باستخدام الجافا

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

تعلم كيفية إرسال و إستقبال البريد الالكترونى مع المرفقات و تنسيق html باستخدام الجافا

مُساهمة من طرف أحمد مناع في الأحد يونيو 16, 2013 9:07 pm

بسم الله الرحمن الرحيم 


أهلا وسهلا بكم إخوانى الكرام فى درس جديد من دروس منتدى مصر التقنى ....اليوم ان شاء الله سنتحدث عن كيفية ارسال و استقبال البريد الالكترونى باستخدام لغة الجافا وسنتعلم فى هذا الدرس النقاط التالية :

1_ كيفية إرسال و إستقبال البريد الالكترونى من خلال حاسبك الشخصى   

2_ كيفية إرسال و إستقبال البريد الالكترونى من خلال خادم بريد جوجل gmail 

3_ كيفية ارسال و استقبال البريد الالكترونى مع المرفقات 

4_ كيفية إعادة التوجيهة أو حذف البريد الالكترونى 

وقبل أن نبدأ تعالوا نتعرف على بعض البروتوكولات المستخدمة فى  Java Mail API  لارسال و استقبال البريد الالكترونى و التى سوف سنتخدمها فى هذا الدرس :

1_ برتوكول SMTP  وهو أختصار للجملة الانجليزية Simple Mail Transfer Protocol 

هو البروتوكول الأساسي لإرسال البريد الإلكتروني عبر الإنترنت...حيث يعتبر SMTP نظاماً بسيطاً، ذو أساس نصي، حيث يتم تحديد مستقبل، أو أكثر، للرسالة، ومن ثم ينقل لهم نص الرسالة

2_ بروتوكول pop وهو أختصار للجملة الانجليزية Post Office Protoco 

وهذا البروتوكول مخصص لاستقبال الرسائل حيث يقدم طريقة سهلة وبسيطة للوصول للبريد، بحيث يسمح هذا البروتوكول للمستخدم بتنزيل جميع الرسائل إلى جهازه ومن ثم قراءتها، مع إمكانية حذفها نهائياً من الجهاز الخادم (server)، وهو مناسب للمستخدمين ذوي الاتصال الضعيف أو المتقطع أو ذو التكلفة العالية، لأنه يمكّنهم من تصفح الرسائل في حالة عدم الاتصال بالإنترنت. ويمكننا تشبيه عمل الجهاز الخادم بعمل مكتب البريد الذي يحتفظ بالرسائل بشكل مؤقت حتى يأتي صاحبها لاستلامها

3_ بروتوكول  IMAP وهو أختصار للجملة الانجليزية Internet Message Access Protoco

وهذا البروتوكول هو الأحدث وهو أيضاَ مخصص لاستقبال الرسائل. حيث يسمح للمستخدم بالدخول إلى الخادم واختيار الرسائل التي يرغب في قراءتها والاطلاع عليها وتحميلها مع بقاءها على الخادم دون حذفها ودون الحاجة لتنزيلها جميعاً (على عكس ما هو معمول به في POP) ، ويمكننا هنا تشبيه عمل الجهاز الخادم بمكتب البريد الذي يحتفظ بالرسائل، ولكن حين يرغب صاحب الرسالة بقراءتها فإنه يأتي للمكتب في كل مرة (عملية صعبة في عالمنا الواقعي، ولكنها سهلة في العالم الرقمي) لذلك فهو مناسب للذين يملكون اتصال جيد ومستمر بالإنترنت.

4_بروتوكول MIME وهو أختصار للجملة الانجليزية Multipurpose Internet Mail Extension 

وهو البروتوكول الموسع للبريد الالكترونى متعدد الاغراض تم تطويرة لتوجد طريقة لنقل ملفات الوسائط المتعدده Multipurpose عبر بوابات البريد الالكترونى كالملفات المرفقة فى رسائل الايميل 


الان تعالوا اخوانى الكرام التحدث عن كيفية ارسال و استقبال البريد الالكترونى وذلك عن النحو التالى :

أولا: ارسال و أستقبال البريد الالكترونى من خلال حاسبك الشخصى ....

1_ إرسال البريد الالكترونى ....وقبل البدء فى كتابة تطبيق جافا يحتوى على السفرات اللازمة لعمل ذلك يجب عليك اولا تجهيز حاسبك الشخصى بما يلى :

أ_ تثبيت أحد خوادم  SMTP على حاسبك الشخصى مثل Postcast server أو Apache James server أو cmail server ...الخ ثم تشغلية على جهازك  

ب _ تحميل المكتبات mail.jar و activation.jar من هذا الرابط 

د_ نقوم بفتح NetBeans لانشاء مشروع جديد 

ج _ نقوم بادراج المكتبات  mail.jar و activation.jar الى المشروع و ذلك عن طريق تحديد ايقونة Library فى القائمة الجانبية للمشروع ومن القائمة التى ستظهر أختر الامر Add jar سيتم فتح لك مربع حوارى للتنقل بين الملفات على جهازك أختر منها المكتبتان ثم ok لتجد المكتبة قد اضيفتت للمشروعك كما فى الصور التالية :





هـ _ كتابة الاكواد اللازمة و ذلك على النحو التالى :

_ استيراد المكتبات اللازمة و ذلك بأستخدام الكود التالى :
الرمز:
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

_ فى الدالة الرئيسية نقوم بكتابة الشفرة التالية :

الرمز:
 String to = "zakyshny@gmail.com";

 String from = "zakyshny@gmail.com";

 String host = "localhost";


 //Get the session object

Properties properties = System.getProperties();

 properties.setProperty("mail.smtp.host", host);

 Session session = Session.getDefaultInstance(properties);


//compose the message

try{

 MimeMessage message = new MimeMessage(session);

 message.setFrom(new InternetAddress(from));

 message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));

 message.setSubject("Ping");

message.setText("Hello, this is example of sending email ");


 // Send message

Transport.send(message);

 System.out.println("message sent successfully....");

 }catch (MessagingException mex) {mex.printStackTrace();}

 }    

شرح الكود السابق ....

فى السطر الاول و الثانى و الثالث قمنا بالاعلان عن ثلاث متغيرات نصية to,form,host و لذلك لتخزين فيها عنوان البريد المرسل الية و عنوان البريد المرسل منه و الاخير لتخزين فيه اسم خادم stmp وهو فى حالتنا تلك يساوى  localhost

 
من السطر الرابع حتى السادس قمنا بانشاء ما يسمى كائن جلسة عمل Session ....ففى بداية السطر الرابع استخدمنا الفئة Properties وهى أحد الفئات التابعة للمكتبة java.util وهى التى تقوم بحفظ أو تحميل بيانات من مخزن stream ....ثم قمنا بتخزين فيها خادم stmp وهو فى حالتنا  mail.smtp.host ....بعد ذلك أستخدمنا الطريقة getDefaultInstance للحصول على كائن الجلسة

من بداية السطر السابع وحتى الحادى عشر قمنا بتكوين الرسالة .....لانشاء رسالة نحتاج الى تمرير كائن جلسة العمل  Session  الى منشىء MimeMessage  ......كما  توفر الفئة MimeMessage طرق لتكوين الرسالة وهى setFrom لوضع عنوان المرسل منه ... addRecipient لوضع عنوان المستلم ....setSubject لوضع موضوع الرسالة ....و اخيرا الطريقة setText لوضع نص الرسالة 


أما السطر الثانى عشر هو لارسال البريد الالكترونى بناء على المعلومات السابقة ...حيث توفر الفئة javax.mail.Transport الطريقة send لارسال البريد الالكترونى 



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

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إرسال و إستقبال البريد الالكترونى مع المرفقات و تنسيق html باستخدام الجافا

مُساهمة من طرف أحمد مناع في السبت يونيو 22, 2013 7:50 pm

متابعة الدرس

2_ إرسال و إستقبال البريد الالكترونى من خلال خادم بريد جوجل gmail

أهلا وسهلا بكم إخوانى الكرام ...فى تلك الجزئية سنتحدث عن كيفية ارسال البريد الالكترونى من خلال خادم gmail وهو افضل بكثير من الطريقة السابقة لكونك لن تقوم بتنصيب اى سرفر أو برامج مساعدة ....فقط سيتم أستخدام خادم stmp الخاص ببريد gmail والذى يجب أن تمتلك حساب عليه حتى تستطيع أستخدام خادم stmp  ...كما أن كود المستخدم فى تلك الطريقة لن يختلف كثيرا عن الكود السابق ....وهو سيكون على النحو التالى :



الرمز:


package javaapplication44;

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class JavaApplication44 {

  
    public static void main(String[] args) {
        
 String to="zakyshny@gmail.com";//change accordingly

Properties props = new Properties();

 props.put("mail.smtp.host", "smtp.gmail.com");

 props.put("mail.smtp.socketFactory.port", "465");

 props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

 props.put("mail.smtp.auth", "true");

 props.put("mail.smtp.port", "465");

 
 Session session = Session.getDefaultInstance(props,

 new javax.mail.Authenticator() {

 protected PasswordAuthentication getPasswordAuthentication() {

 return new PasswordAuthentication("yormail@gmail.com","password");

 }

 });

 try {

 MimeMessage message = new MimeMessage(session);

 message.setFrom(new InternetAddress("zakyshny@gmail.com"));

 message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));

 message.setSubject("Hello");

 message.setText("Testing.......");

 Transport.send(message);

 System.out.println("message sent successfully");



} catch (MessagingException e) {throw new RuntimeException(e);}

 }    
        
        
      
    }

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إرسال و إستقبال البريد الالكترونى مع المرفقات و تنسيق html باستخدام الجافا

مُساهمة من طرف أحمد مناع في السبت يونيو 22, 2013 8:43 pm

متابعة للدرس 

3_ استقبال البريد الالكترونى من خلال الجافا 

أخوانى الكرام أهلا وسهلا بكم ....تعلمنا فى الجزئية الاولى و الثانية كيفية أرسال البريد الالكترونى سواء من خلال خادم stmp الخاص بك أو خادم stmp الخاص ببريد gmail ....أما فى تلك الجزئية سنتحدث عن كيفية استقبال البريد الالكترونى من خلال خادم pop وهو البروتوكول المسئول عن استقبال البريد الالكترونى ....كما نوهنه عنه فى بدايه هذا الدرس 

_وهناك خمس خطوات لكتابة كود جافا لاستقبال البريد الالكترونى وهم على النحو التالى :

1_ انشاء كائن جسلة العمل session object 
2_ إنشاء كائن pop3 و التواصل مع خادم pop 
3_إنشاء كائن المجلد و فتحه 
4_إستيراد الرسائل من كائن المجلد و طباعته 
5_إغلاق كائن pop3 وكائن المجلد 

ويتم ذلك من خلال الكود التالى :

_ أستيراد المكتبات الاتية :

الرمز:


import java.io.IOException;
import java.util.Properties;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import com.sun.mail.pop3.POP3Store;

_ نقوم بأنشاء كلاس أو فئة وليكن بأسم receiveEmail بالمعاملات الاتتية :

الرمز:
public static void receiveEmail(String pop3Host, String storeType, String user, String password) {

 
 }

وكما ترون فأن تلك الفئة تتطلب المعامل pop3Host لوضع عنوان خادم pop فيه , المعامل storeType لتحديد نوع مخزن pop , المعامل user لوضع اسم المستخدم لخادم pop , المعامل password لوضع كلمة المرور للخادم ......وبداخل تلك الطريقة سنقوم بكتابة الاكواد التالى :

 1_ انشاء كائن جسلة العمل session object ....وذلك بأستخدام الكود التالى :

الرمز:
 Properties properties = new Properties();

 properties.put("mail.pop3.host", pop3Host);

 Session emailSession = Session.getDefaultInstance(properties);

  2_ إنشاء كائن pop3 و التواصل مع خادم pop ....وذلك بأستخدام الكود التالى :
الرمز:
POP3Store emailStore = (POP3Store) emailSession.getStore(storeType);

 emailStore.connect(user, password);

  3_إنشاء كائن المجلد و فتحه  ....وذلك بأستخدام الكود التالى :
الرمز:
Folder emailFolder = emailStore.getFolder("INBOX");

 emailFolder.open(Folder.READ_ONLY);

  4_إستيراد الرسائل من كائن المجلد و طباعته  ....وذلك بأستخدام الكود التالى :
الرمز:
Message[] messages = emailFolder.getMessages();

 for (int i = 0; i < messages.length; i++) {

 Message message = messages[i];

 System.out.println("---------------------------------");

 System.out.println("Email Number " + (i + 1));

 System.out.println("Subject: " + message.getSubject());

 System.out.println("From: " + message.getFrom()[0]);

 System.out.println("Text: " + message.getContent().toString());

 }

  5_إغلاق كائن pop3 وكائن المجلد .... وذلك بأستخدام الكود التالى :
الرمز:
emailFolder.close(false);

 emailStore.close();

 
أما فى الدالة الرئسية للبرنامج سنقوم بكتابة الكود التالى : 

الرمز:
 String host = "pop.gmail.com";//change accordingly

 String mailStoreType = "pop3";

 String username= "zakyshny@gmail.com";

 String password= "xxxxx";//change accordingly



 receiveEmail(host, mailStoreType, username, password);

و يرجى ملاحظة أننا فى الكود أعلاه أستخدمنا خادم pop الخاص ببريد gmail و ذلك لكونى لا املك خادم خاص بى .....و قد يخطر فى بالك سؤالك ...كيف عرفت عنوان خادم pop الخاص بريد gmail ؟ 

و الجواب بيسط للغاية هو يمكنك الدخول على الرابط التالى و ستعرف عنوان خادم بريد gmail 

https://support.google.com/mail/answer/13287?hl=en 

كما يمكنك ملاحظة أننى استخدم حسابى فى بريد gmail كلمة المرور ايضا لاستخدامهما فى خادم pop الخاص ببريد gmail .....ويمكنك تغير الى حسابك وكلمة مرورك بالجى ميل

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إرسال و إستقبال البريد الالكترونى مع المرفقات و تنسيق html باستخدام الجافا

مُساهمة من طرف المبرمج الطموح في السبت يوليو 06, 2013 7:32 am

شرح متميز يا استاذنا

المبرمج الطموح
الاشراف
الاشراف

تاريخ التسجيل : 18/02/2011
المساهمات : 117
النقاط : 213
التقيم : 6
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إرسال و إستقبال البريد الالكترونى مع المرفقات و تنسيق html باستخدام الجافا

مُساهمة من طرف VB.NET في الجمعة سبتمبر 19, 2014 7:17 pm

الله عليك ...طال الله عمرك و نفعنا بك

VB.NET
المراقبين
المراقبين

تاريخ التسجيل : 18/02/2011
المساهمات : 117
النقاط : 185
التقيم : 6
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إرسال و إستقبال البريد الالكترونى مع المرفقات و تنسيق html باستخدام الجافا

مُساهمة من طرف NEXT في الثلاثاء فبراير 09, 2016 3:53 pm

للرفع

NEXT
الادارة
الادارة

تاريخ التسجيل : 18/02/2011
المساهمات : 262
النقاط : 378
التقيم : 10
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى