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

كيف ارسل ايميل بواسطة winsock

مغلق
بدأه rami23 في 4 نوفمبر 2002 · 19 رد · 2,697 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

شباب من يقدر يفيدنا في كيفية ارسال الايميل بمرفقات بواسطة winsock

انا ادري ان فيه ادوات جاهزه لكن اتمنى انها تكون بالوين سوك عشان نقدر نفهم اللغه اكثر لاني بحثت في المنتديات مالقيت احد كاتب عنها ياليت ان اخوي tmaaa مايقصر وكل من يعرف اي معلومه يحطها

مع الشكر

#2

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

في البداية ارحب بالأخ rami23

معنا في هذا المنتدى وانشاء تجد فيه المفيد والجديد

في البداية سنأخذ جولة حول فكرة البريد :

فكره البريد هي عباره عن جهاز سيرفر متصل بالأنترنت يوضع له عنوان معين مثلا SUM

ويتم توفير ملقمين على هذا السيرفر هما Pop3 و Smtp وهما لخدمه البريد (( اي عاملان اساسيان في تكوين البريد ))

وطبعاً سيكون هناك مجموعة من عناوين البريد مستضافه على هذا السيرفر وتحمل اسم داخلي

مثلا name@sum.com وهذا بالتمثيل على مسمى السيرفر السابق :D

بالنسبة لملقمي البريد السابقين وهما ال Pop3 و Smtp فوضيفة كل منهما التالي :

Pop3 : وضيفة هذا الملقم هو عرض او تحميل الرسائل التي يحتويها البريد سواء على جهاز المستخدم (( بواسطة برامج البريد ))

ام على الصفحة الخاصة بالبريد على الأنترنت ويتم توفير عنوان خاص بهذا الملقم على الأنترنت وعاده يكون رقم هذا الملقم 110

Smtp : وضيفته هي استقبال الرسائل من شركات بريد اخرى او من اي طرف خارجي آخر وايصال الرسالة الى البريد المطلوب

ويتم توفير عنوان خاص بهذا الملقم على الأنترنت وعاده يكون رقم هذا الملقم 25

ويهمنا في هنا هو ملقم ال Smtp لأننا نريد ان نرسل رسالة الى البريد

وطبعاً فكرة ارسال الرسائل هي انه يتم الاتصال بالملقم Smtp ومن ثم ارسال البيانات الشخصية وعنوان البريد المرسل اليه

وعنوان الرسالة و الرسالة .... وطبعاً يكون ذلك بتنسيق معين وترسل البيانات الى الملقم وهو يتولى الأمر

(( كما هي الفكره في برامج المحادثه وكذلك برامج الاختراق - يمكنك مراجعة موضوعي " تعلم كيف تصنع برنامج اختراق " ))

ملاحظة مهمة : عندما تريد ان ترسل رساله الى اي بريد لابد ان اتتصل بعنوان ال Smtp الخاص بسيرفر البريد المرسل اليه

مثلاً عندما تريد ان ترسل رسالة الى شخص يمتلك بريد في شركة الهوتميل ونفراض ان عنوانه كالتالي :

arabteam@hotmail.com

فتقوم اولاً بالأتصال بملقم ال Smtp الخاص بشركة ال Hotmail ومن ثم ارسال الرسالة باي طريقة كانت

اي انه لايمكن لك ان تتصل باي عنوان بريد آخر غير عنوان الشركة المراد ارسال البريد الرسالة للبريد الخاص لمستخدمها

وهنا ننطلق في موضوعنا بعد ان اخذنا فكره عن البريد الإلكتروني

بالنسبة للبريد في الدلفي فقد تم توفير كائانت توفر لك عناء التعب والتنسيق في ارسال الرسالة بواسطة وحدات نقل البيانات بين الأجهزه winsock

حيث ماعليك في هذا الكائن الكتابة عنوان الشخص المرسل اليه وعنوان بريدك واسمك وملقم ال Smtp و البورت والرسالة ...

وهو يقوم بتنسيقها وارسالها عبر وحدات ال winsock حيث يوفر عليك الجهد البرمجي

ومن الأمثلة على هذه الكائنات الكائن TNMSMTP من مجموعة FastNet

ويوجد مثال رائع على هذا الكائن يمكنك الأطلاع عليه في هذا المسار:

DemosFastNetSmtp

في مجلد الدلفي

هذا بالنسبة لطريقة الارسال

اما بالنسبة لملقمات ال Smtp لأشهر شركات البريد فهي :

Hotmail : mx1.hotmail.com

Yahoo : mx1.mail.yahoo.com

ولمن يريد عناوين ال Smtp لأي بريد ارجوا منه ان يخبرني وانا إن شاء الله سأبحث له في ذلك

وتقبلوا اطيب تحياتي اخوكم SUM

#3

السلام عليكم

نقلا عنك يا أخ sum

"وطبعاً فكرة ارسال الرسائل هي انه يتم الاتصال بالملقم Smtp ومن ثم ارسال البيانات الشخصية وعنوان البريد المرسل اليه"

, و نقلا عنك ايضا

"ملاحظة مهمة : عندما تريد ان ترسل رساله الى اي بريد لابد ان اتتصل بعنوان ال Smtp الخاص بسيرفر البريد المرسل اليه"

معنى العبارةالاولى أني إذا أردت إرسال رسالة ألى شخص

ما فعلي أن أتصل بالملقم smtp الذي يوجد عليه اشتراكي

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

مثلا إذا كان بريدي mothanna1982@hotmail.com

فعلي أن اتصل بالsmtp للهوتميل

ثم قلت يا أخ sumفي العبارة الثانية المنقولة عنك في الأعلى

أن على من يريد أن يرسل رسالة لا بد أن يتصل بالsmtp

للشخص الذي يريد أن يرسل أليه

وفي الأمرين تناقض كبير

فلنبتعد عن الغموض و الخربطة

أنا لدى ايميل على هوتميل mothanna1982@hotmail.com

أريد أن أصمم برنامج يرسل البريد طبعا باستخدام tnmsmtp

فبماذا على ان أملأ هذه ال property

smtp1.port

smtp1.host

smtp1.postmessage.fromaddress

smtp1.postmessage.fromname

smtp1.userid

ومن ثم كيف يمكنني الوصول ألى ملقم الsmtp وارسال

رسائل منه من خلال الuserid فقط

و بذلك يستطيع أي شخص أرسال رسائل من

بريدي أذا مان يعرف my userid

ألا يجب أن يكون هناك حقل للباسوورد لكي أتمكن أنا فقط

ولا أحد غيري من إرسال الرسائل من بريدي

أعرف أنو حكيي كتير بس أرجو يا أخ sum أنو تجاوبني

برحابة صدر و بدقة على كل بند لأنني و الله العظيم تهت

بها الموضوع

و اكون شاكر لك هذا الأمر

#4

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

اخي العزيز concord

في البداية ارحب بك معنا في المنتدى

واشكرك علا ملاحظاتك القوية

وباين عليك مشاء الله مدقق لغوي ;)

وآسف كثيراً على الخطأ الذي حصل

وطبعاً انا كان قصدي في جميع كلامي السابق

انه عملية الاتصال بال stmp تكون لبريد الشخص الذي تريد ان ترسل اليه الرسالة

هذا هو كل ماكنت اقصد

وطبعاً انا كنت مستعجل في الكتابه فماكنت ادقق في النصوص الأملائيه

على العموم

بالنسبة لسؤالك

فانا ماادري ايش تبغا بالضبط

انت تبغا ترسل منه رساله او تبغا ترسل اليه رساله

فذا كنت تقصد ان ترسل منه رساله

فعملية الارسال الى اي بريد مفتوحه

يعني تقدر ترسل رسالة الى اي شخص من عنوان مجهول

يعني عنوانك غير ضروري في ارسال الرسالة

اما بالنسبة لعملية ارسال الرسالة الى بريدك

طبعاً على ماذكرت انه عنوان بريدك هو :

mothanna1982@hotmail.com

فالخطوات الي يجب عليك عملها هي كالتالي :

1- تحديد عنوان ملقم ال Smtp للشركة المستضيفه لبريدك ( الهوتميل )

وهو طبعاً كما ذكرت :

mx1.hotmail.com

2- تحديد المنفذ وهو كما ذكرت 25

3- تحديد عنوان البريد المرسل اليه وهو : mothanna1982@hotmail.com

4- تحديد موضوع الرسالة ( اكتب ماتشاء )

5- تحديد نص الرسالة ( اكتب ماتشاء )

6- تحديد عنوان البريد المرسل منه ( يمكنك كتابة اي بريد تشاء اي انك غير ملزم باي عنوان ;) )

7- تحديد اسمك ( اكتب اي اسم لك )

8- القيام بعملية الإرسال

طبعاً تنفيذ الخطوات السابقة برمجياً هو كتالي :

NMSMTP1.Host:='mx1.hotmail.com';

NMSMTP1.Port:=25;

NMSMTP1.PostMessage.ToAddress.Add('mothanna1982@hotmail.com');

NMSMTP1.PostMessage.Subject:='Test Send Message';

NMSMTP1.PostMessage.Body.Add('Good Send Message');

NMSMTP1.PostMessage.FromAddress:='sum@sum.com';

NMSMTP1.PostMessage.FromName:='SUM';

NMSMTP1.Connect;

NMSMTP1.SendMail;

NMSMTP1.Disconnect;

وتقبل اطيب تحياتي اخوك SUM

#5

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

الكود اللي يعتو مو شغال و لا حتى البرنامج الموجود في

مجلد الديمو شو المشكلة مشان الله

هل لمزود الخدمة علاقة

و على سيرة دقة الملاحظة فانت ارسلت في إحدى مشاركاتك أن عنوان smtp للهوتميل هو

mc2-f5.law16.hotmail.com

والآن أرسلت عنوان آخر mx1.hotmail.com

فهل العنوان يتغير بشكل دائم

و اذا بدنا اسم ملقمpop3 للهوتميل منين نجيبو

ولك جزيل الشكر وفائق الاحترام

#6

اخي العزيز concord

اشكرك على اهتمامك بالموضوع

وطبعاً الكود الي ذكرته شغال 100 %

وانا مجربه

وعلشان تصدق تجربتي للكود شوف الرسالة الي وصلتك في البريد وهي من أثر التجربه

على العموم

بالنسبة لعدم عمل الكود لديك

قد يكون بسبب انك تعمل على الدلفي 7

وهنا الوضع يختلف

لأنه على مااعتقد انه في الدلفي 7 الكائن الي ذكرته غير موجود ومبدل بكائن آخر

فرجاء انك تذكر لي اصدار الدلفي الموجود عندك !!

اما بالنسبة لملقم ال Smtp

فتوجد ملقمات كثيره لبريد الهوتميل

وربما يكون الملقم الي ذكرته واحد منها

وتقبل اطيب تحياتي اخوك SUM

#7

السلام عليك يا أخي العزيز

أنا بعدي اعمل على الدلفي 5

و أود أن أخبرك أن البرنامج لا يعطي خطأ في الترجمة

و إنما خلال التنفيذ يعطينيconnection failed

و شو مشان pop3 للهوتميل

#8

السلام عليكم ,,,

اكثر من رائع أستاذ SUM بارك الله فيك ...

أخيراً فهمت الطريقة ... و الكود يعمل 100%

و لكن ماذا عن الاتاشمنت :D يعني فضلاً و ليس أمراً

و كيف ممكن أعرف الهوست لأي بريد ؟!

مع تحياتي ,,,

#9

اخواني

السلام عليكم مره ثانيه

انا عارف طريقة الارسال ب nmsmtp

لكن ابي اعرف كيف ارسلها بالوين سوك بان اكتي في المستخدمات winsock

وابدا اصلح برنامج يرسل بواسطها ابي اعرف كيف اشفر الملف المرفق وارسله وكل شغلات الارسال بالوين سوك

ياليت من عنده لو معلومات بسيطه يعطيناها انا ودي نفتح اكثر على فوائد الوين سوك ومانركض ورى الادوات الجاهزه

مع الف شكر وخاصه للاخ sum

#10

السلام عليكم

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

بعد أن كثرت إيميلات Spam بشكل رهيب ( تم إرسالها باستخدام مزودات SMTP بأسماء مزيفة ) أصبحت المزودات الحديثة والبرتوكول ESTMP ترفض مثل هذه العملية ( تسمي Relaying ) .. إذا أردت ان تستخدم إحدي مزودات SMTP علي الاقل يجب أن تكون لديك حساب لديها، او يجب ان تحمل حقل من Mail From عنوان المزود نفسه اي اذا كنت تستخدم mail.somemail.com يجب ان يحتوي الحقل علي شيء مثل user@somemail.com ولا يقبل عناوين غير عناوينها ( عند الاتصال المزود يقوم بعملية Revers DNL lookup ، واذا لم يحصل علي عنووان Domain سوف يغلق الاتصال او يرفض إكمال العملية ) ..

ولكن هناك بدائل : يمكنك تنصيب مزود SMTP لديك او استخدام مزود الخاص بشركة مزود الخدمة لديك اذا سمحوا

أو استخدام مزود SMTP للهدف الذي تريد إرسال البريد إليه، مثلا اذا كنت تريد إرسال البريد إلي عنوان user1@mail.com عليك باستخدام المزود الخاص بـ mail.com وبذلك كأن الميل صادر من نفس الشبكة ولا يكون Relaying ... وللحصول علي مزود البريد SMTP لاحدي الشبكات يمكنك تنفيذ DNLookup للحقل MX = Mail Exchange ( مواقع مثل www.arin.com او برنامج مثل samspade يمكنها القيام بالمطلوب ) ...

ولمن سئل عن كود لإرسال البريد باستخدام وين سوك فقط بدون مكونات، فقد أرفقت ملف مشروع يقوم بإرسال البريد أضافة إلي إرفاق ملف بعد التكويد بBase4

لم اقم بتجربة الكود، فلذلك لا اعرف اذا كان يعمل بشكل مطلوب، واظنه يحتوي علي أخطاء كثيرة ويجب تصحيحها ولكني وضعتها لمجرد توضيح كيفية العمل ... حتي تعمل بشكل صحيح عليك قراءة وثائق المعنونة الخاصة ب SMTP ( أرفقتها بالمشروع ) ...

http://www.freewebz.com/sadjackal/smtp.exe

مع تحيات CIO

#11

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

اخي العزيز concord

بالنسبة لعنوان ال pop3 للهوتميل فحقيقة اني مااعرفه

وبالنسبة للأخ talal*c

فالنسبة لل Attachments

فيمكنك استخدام الكود التالي :

NMSMTP1.PostMessage.Attachments.Add('c:sum.exe');

وبالنسبة للأخ rami23

يمكنك مراجعة موضوع الأح tmaaa :

http://www.arabteam2000.com/vb/showthread....p?threadid=6623

او انظر الى رد الأخ عبدالحفيظ

وفي النهاية

اشكر الأخ عبدالحفيظ على هالمعلومات القيمة

وتقبلوا اطيب تحياتي اخوكم SUM

#12

السلام عليكم

شكرا اخ عبدالحفيظ على الكود .(f)

(انا لم اتاكد من ان الكود يعمل ام لا, حين اكون فاضي سألقي نظره على الكود .من الصعب وجود mail server يسمح بارسال رسائل عن طريقه ).

(f)

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#13

مذهل أخ عبد الحفيظ

لكن ارجو منك توضيح طريقة عمل DNLookup للحقل

MX = Mail Exchange

و بطريقة يفهمها المبيدئين أمثالي

شاكرا لك مشاركتك الفعالة مرة أخرى

#14

الموضوع رااااااائع

اخواني

الاخ خالد ممدوح في الفيجول بيسيك استعمل اداة خاصه تستعمل سيرفر خاص وسألته قال انه سيرفر مؤجر ويستطيع ايصال ملايين الرسائل

الى اي ايميل ومن اي جهاز لكن ماعلمني كيف استأجره

جربت الاداة وارسلت رساله لايميلي وقريت الهيدر في الاوتلوك وعرفت الملقم المستعمل من اي موقع لكن كان من وقت طويل وفي القريب ابرسل واشوف اسم الموقع او ابسأل الاخ خالد ممدوح هذا فضلا عن سرعة السيرفر الرائعه

اما الاخ تما ارجو منك ابلاغنا عند تصحيحك للاخطاء (اذا كنت فاضي)

والف شكر

#15

السلام عليكم

الاخ عبد الحفيظ اكثر خبره في هذا المجال .

ان شاء الله سنعمل جميعا لمعالجه الاخطاء ان وجدت .

نريد اسم server يمكن من خلاله ارسال الرسائل والا لن نستطيع التاكد من ان البرنامج يعمل بشكل صحيح ام لا .

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

(f)

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#16

السلام عليكم

اشكرك اخوي تما على الرد السريع

اسم السيرفر ملقم الشركه

proxy.shabakah.net.sa

يكون

mail.shabakah.net.sa

مثل كذا في باقي الشركات

ارجو ان يكون هذا قصدك واذا بغيت تتأكد من صحة الملقم تقدر تتأكد منها في الاوتلوك

#17

السلام عليكم

بالنسبة لاكتشاف MX ، يمكن استخدام امر nslookup في الصيغة الآتية

nslookup -type=MX www.domain.com

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

نرجع إلي الموضوع الأصلي، انا كنت انوي اعمل مزود SMTP او SMTPRelay بس الوقت في رمضان لا يسمح :confused:

علي العموم، اذكر ان الأخ fsl استطاع إرسال بريد من جهازه باستخدام احدي المكونات واظن اسمه SMTPrelay ، يمكن الاستفادة منه ولكنه بدون الكود المصدري،

أيضا Indy ضمن أمثلته يحتوي علي مشروع SMTPRelay ويقوم بالاتصال بالمزود الهدف مباشرة ويرسل البريد ... لا ادري ان كان يسمح بإضافة ملف أم لا، وعلي كل حال هذه الطريقة لا ينفع للبريد المزور، forge mail او fake mail :D

لان البريد خارج من جهازك ....ويمكنكم الاطلاع علي كود المشروع لكيفية عملها ;)

وICS أيضا يحتوي علي مشرع SMTP gateway

http://overbyte.delphicenter.com/arch/mailgw.zip

وللمزيد حول SMTPrelay و gateway يمكنك الاطلاع علي SMTP FAQ

http://users.pandora.be/sonal.nv/ics/faq/T.../TDNSQuery.html

http://users.pandora.be/sonal.nv/ics/faq/TSMTPCli.html

http://users.pandora.be/sonal.nv/ics/faq/Internet.html

http://users.pandora.be/sonal.nv/ics/faq/General.html

بالنسبة لمزود يقبل بتحويل البريد المزيف بشكل عادي، إذا كان المزودات الشهيرة مثل hotmail او maktoob لا يسمح، يمكن البحث عن مزواد لمواقع الجامعة، فغالبا مثل هذه المواقع الامن فيها يكون ضعيفا :D

ملاحظة : صاحب الرد لا يتحمل أي مسئولية ينتج عن استخدام المعلومات الواردة هنا، ماتم ذكره ذكره من اجل التعليم والشرح ..

#18

السلام عليكم

اخواني الكود تنفذ صح لكن ماارسل ولا فتح المنفذ وين المشكله ياترى

؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟!!!!!!!!!!

#19

السلام عليكم

انا عدلت الكود وكان فيه أخطاء كثيرة لا تسمح بالعمل بشكل صحيح ، ونزلت عندني مزود SMTP محلي وجربته وعمل بشكل جيد ... إرفاق الملف أيضا ..

وعند تجربتي للبرنامج علي مزود gawab.com طلب مني اسم المستخدم وكلمة السر ..

علي كل حالة يمكن اضافة الكود لتقديم كلمة السر، عند الاتصال بالمزود بدلا من ارسال كلمة helo يتم ارسال EHLO، والمزود يرد بطريقة ارسال الاسم وكلمة سر، ثم يتم ارسال AUTH LOGIN والمزود يرد رقم 334 اذا تم بشكل صحيح ، ثم نرسل كلمة سر ثم اسم المستخدم ثم يستمر الارسال بشكل عادي ..

لقد ارفقت الملف المعدل

smtp.zip

#20

السلام عليكم اخوي

عبدالحفيظ الف الف مليون شكر على تعديلك الكود الحين نقدر نفهمه ونستفيد من طريقة الارسال

do

مشكوووووووووووووووووووووووووووووووووووووووووووووووور

loop

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

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