الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

إرسال E-mail

مغلق
بدأه solo man في 4 يوليو 2005 · 2 رد · 1,370 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
رجاءً أريد الطريقة لإرسال ال E-mail (بالكود) لوسمحتم وبشكل عاجل جداً :unsure:
#2

كيف تخاطب السيرفر لتقرأ أو ترسل بريد إلكتروني

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

السلام عليكم ورحمة الله وبركاته

نتعرف على طريقة إستخدام أداة Winsock في إرسال و استقبال الرسائل الإلكترونية .

و سنتعرف في هذه العجالة على طريقة التخاطب مع السيرفر عبر المنفذ 25 (ملقم البريد الصادر) و المنفذ 110 (ملقم البريد الوارد) .

في البداية يفترض أنه سبق أن تعاملت مع أداة Winsock و تعرفت على خصائصها و طرقها و أحداثها

الآن عودة لموضوعنا ،

إن ميكروسوفت أوت لوك ( أو أي برنامج بريد أخر) يقدم لك خدمة إستقبال الإيميل من سيرفر مقدم الخدمة إلى جهازك و كذلك العكس ، فهو يقدم لك خدمة إرسال الإيميلات من جهازك إلى سيرفر مقدم الخدمة ليصدر الإيميل و كأنه من الموقع ، هذا يتم دون أن تفتح صفحة موقع مقدمة الخدمة .

والسؤال هنا ،،،،،،، كيف يتم هذا ؟

كيف يتراسل Microzfit OutLook مع موقع مقدمة الخدمة ، وما هي الحوارات التي تتم بينهم .

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

لنفرض أن لديك العنوان البريدي التالي MyEmail@gawab.com عند مقدم الخدمة gawab.com و تريد أن ترسل رسالة إلكترونية من جهازك عبر الأوت لوك لصديقك الذي عنوانه A123456789@islamway.net

إن أول ما سيفعله برنامج البريد هو :

الإتصال مع السيرفر عبر المنفذ 25 (منفذ الصادر)

إن ملقم خدمة البريد الصادر في موقع gawab.com هو SMTP.gawab.com

(من المفترض)إننا نعلم كيف يتم الاتصال مع السيرفر عبر منفذ باستخدام winsock إنه في الأمر التالي :

code: Winsocl.Connect "SMTP.gawab.com" , 25

نحن الآن طلبنا الاتصال بالسيرفر SMTP.gawab.com عبر المنفذ 25 .

الذي سيحدث الآن أن السيرفر سيرد علينا برسالة . ولكن كيف نقرأ الرسالة ؟

إن كانت قد اطلعت على درس الأستاذ رغيد الطيب أو عندك خلفية عن هذه الآداة فستعرف أنك تقرأ الرسائل القادمة من الطرف الأخر تحت الحدث DataArrival التابع للأداة Winsock باستخدام الأمر winsock.GetData

إذاً سيكون ملخص هذه الفقرة أن تكتب ما يلي

code: Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)

Dim strRespone As String

Winsock.GetData strRespone
' المتغير سيحمل قيمة الرسالة القادمة من السيرفر

End Sub

إن المتغير strRespone سيحمل قيمة نصية تمثل الرسالة القادمة من السيرفر .

و عبر تحليل هذه الرسالة سنرسل للسيرفر و نستقبل الرسائل الإلكترونية و نعرف عدد الرسائل في صندوق الوارد و نحذف أي رسالة لا نريدها .... إلخ .

المهم هذه الرسالة القادمة من السيرفر تختلف من سيرفر لآخر ولكن ....

الخانات الثلاث الأولى منضبطة وهي تمثل الحالة . أما الخانات التي بعدها فتتغير من سيرفر لأخر .

إن أول رسالة سنستقبلها بعد طلب الاتصال مع السيرفر SMTP.gawab.com ستكون :

code: 220 gawab.com ESMTP

إن الرقم 220 يعني أنها عملية ناجحة أما بقية الخانات فإنها لا تعنينا هنا .

إذا علمنا أن عملية الإتصال تمت بناجاح فنقوم بالخطوة التالية .

نرسل للسيرفر رسالة "Helo gawab" كالتالي :

code:  Winsock.SendData "HELO gawab" & vbCrLf

إن vbCrLf بمثابة زرEnter أو سطر جديد .

سيرد علينا السيرفر برسالة :

code: 250 gawab.com

ما يهمنا هنا الرقم 250 أي أن العمية ناجحة . أما ما بعده فيختلف من سيرفر لآخر .

عندها نرسل للسيرفر أمر إرسال إيميل "MAIL FROM:" و نعطيه الإيميل الصادر الذي هو MyEmail@gawab.com كالتالي :

code: Winsock.SendData "MAIL FROM: MyEmail@gawab.com"  & vbCrLf

سيرد علينا السيرفر بـ :

code: 250 Ok

لاحظ أن الرقم 250 يعني أن العملية ناجحة

عندها نرسل للسيرفر أمر "RCPT TO:" بأن الإيميل سيذهب للعنوان A123456789@islamway.net كتالي :

code: Winsock.SendData "RCPT TO: A123456789@islamway.net"  & vbCrLf

و سيرد علينا السيرفر بـ :

code: 250 ok

وكما قلنا أن الرقم 250 يعني أن العملية ناجحة

بعد ذلك نخبره بأننا سندخل البيانات عن طريق ارسال الأمر DATA كالتالي :

code:  Winsock.SendData "DATA"  & vbCrLf

سيرد علينا السيرفر بـ :

code: 354 go ahead

المهم هو الرقم 354 أما ما بعده فقد يتغير من سيرفر لاخر

الآن نقوم بإرسال الرسالة كالتالي :

code: Winsock.SendData "Subject: الحمد لله رب العالمين"& vbCrLf
 Winsock.SendData "هذا بفضل الله وحده فله الحمد و له الشكر"  & vbCrLf

أكتب ما بدا لك و لن يرد عليك السيرفر إلا بعد أن تخبره بأنك قد انتهيت من كتابة الرسالة بإرسال نقطة فقط "." كالتالي :

code: Winsock.SendData "." & vbCrLf

عندها يعلم السيرفر أنك انتهيت من كتابة الرسالة . فيرسل لك رسالة كالتالي :

code: 250 ok 1046078031 qp 92328

الرقم 250 يعني أن العملية ناجحة .

إذا أردت أن تخرج من السيرفر تكتب الأمر QUIT كالتالي :

code: Winsock.SendData "QUIT" & vbCrLf

و سيرد عليك السيرفر بالرسالة :

code: 221 gawab.com

الرقم 221 يعني إنهاء الاتصال مع السيرفر .

هذا فيما يخص البريد الصادر ، أما البريد الوارد فسنتطرق له في الدرس القادم بإذن الله .

يمكنك عبر الملف المرفق إرسال أوامر للسيرفر و استقبال رسائل السيرفر الذي تحدده مع كتابة المنفذ المناسب .

فقط أكتب الأمر ، مثلاً :

أكتب HELO gawab في خانة كتابة الأوامر للسيرفر ثم زر إنتر و سيتم ارسال الأمر بإذن الله .

هذا و الله أعلم

وصلى الله و سلم على نبينا محمد ، والسلام عليكم ورحمة الله وبركاته

منقول عن أخوكم في الله

#3

السلام عليكم ورحمة الله وبركاته

نكمل بحمد الله الجزء الثاني من الدرس وهو : كيف تقرأ بريدك الإلكتروني .

إن البرتوكول Post Office Protocol المعروف إختصاراً بـ POP يعمل على المنفذ 110 .

معني ذلك أن إن أردت أن تعمل اتصال مع الملقم تضع الأمر التالي :

 Winsocl.Connect "POP.gawab.com" , 110

على افتراض أننا نريد الاتصال مع ملقم سيرفر جواب دوت كوم .

إن أول رد من السيرفر سيكون كالتالي :

 <OK <91132.1046951485@gawab.com+

و كما قلنا في الـ SMTP أننا نهتم بالخانات الثلاث الأولى (مثل 220 و 250 و 221 و 254 ) لتحليل رد السيرفر ، كذلك في الـ POP فإن الخانات الثلاث أو الأربع الأولى تعبر عن جواب السيرفر بالقبول أو الرفض .

أي أن :

  OK+

تعني موافق أو صحيح

بينما

 ERR-

تعنى خطأ أو رفض .

و على هذا نستطيع تحليل رسائل السيرفر .

أما أوامر السيرفر فهي على النحو التالي :

 USER name               valid in the AUTHORIZATION state
PASS string
QUIT

STAT                    valid in the TRANSACTION state
LIST [msg]
RETR msg
DELE msg
NOOP
RSET
QUIT

والآن لنأخذ عليها مثال (باستخدام البرنامج المرفق في المشاركة الأولى):

لنعمل اتصال على الملقم POP.gawab.com و اجعل المنفذ = 110

اضغط على زر Connection أي اتصال .

سيرد عليك السيرفر برسالة كهذه :

 <OK <91132.1046951485@gawab.com+

جيد السيرفر الآن يقبل الاتصال .

الآن لنضع له البريد الذي نريد أن نفتحه ، أكتب في خانة الأوامر النص التالي (على افتراض أن عنوانك البريدي هو mr_zahar@gawab.com):

 USER mr_zahar@gawab.com

ستجد أن السيرفر رد عليك بـ :

  OK+

أي عملية مقبولة .

الآن يجب أن نرسل كلمة السر كالتالي (على افتراض أن كلمة السر هي aaaa1111):

 PASS  aaaa1111

إن كانت كلمة السر صحيحة فسيرد عليك السيرفر بـ +OK و إن كانت خاطئة سيرد عليك بـ -ERR .

ملاحظة :

قد تكون كلمة السر صحيحة و لكن السيرفر لا يقبل الدخول عبر المنفذ 110 ، و مثال على ذلك موقع Yahoo فإنه لا يقبل العملية إلا إن كنت مشترك عندهم بالخدمة (بمقابل مادي) أو الخيار الآخر أن تدخل على بريدك عبر المتصفح .

نكمل ...........

الآن نريد أن نتعرف على حالة البريد و عدد الرسائل فيه ، إن الأمر Stat يوفر لك ذلك :

 Stat

سيرد عليك السيرفر بـ

 OK 6 7536

حيث أن الخانة الخامسة (الرقم 6) تعنى عدد الرسائل في البريد .

لتتعرف على حجم كل رسالة بالبايت ، الأمر List يوفر لك ذلك :

 List

و سيرد عليك السيرفر بالنتيجة :

1 3032
2 1068
3 1399
4 1399
5 267
6 371
.

جيد ، لنفرض أننا نريد أن نقرأ الرسالة الأولي ، الأمر retr يخدمنا :

 retr 1

سيرد علينا السيرفر بالرسالة :

Received: (qmail 28741 invoked by uid 1004); 24 Feb 2003 10:18:53 -0000
Received: from unknown (HELO gawab) (212.93.217.222)
  by gawab.com with SMTP; 24 Feb 2003 10:18:37 -0000
الحمد لله رب العالمين ، والصلاة والسلام على محمد و أله و صحبه أجمعين .

Status: RO
X-UIDL: 1046081936.28764_0.,S=220


.

ممتاز لنفرض أننا نريد أن نحذف رسالة معينة ؟

الأمر Dele سيخدمنا في هذا :

 Dele 1

و سيرد السيرفر بـ:

 OK+

أما إن أردت قطع الاتصال مع السيرفر فالأمر Quit سيفيدك في هذا :

 Quit

طبعاً سيرد عليك السيرفر بـ :

OK+

هذا بشكل عام ، و من أراد الإستزادة في موضوع البرتوكول POP أو SMTP فانصحه بـ :

http://www.faqs.org/rfcs/rfc1939.html

http://www.faqs.org/rfcs/rfc821.html

والله الموفق , ولا تنسونا من دعوة صالحة

و صلى الله على نبينا محمد و على آله و صحبه أجمعين .

والسلام عليكم ورحمة الله وبركاته

أخوكم في الله ، أبو عابد

email_and_server.zip

هذا الموضوع مغلق.

مواضيع مشابهة