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

درس: إرسال رسائل البريد الإلكتروني في بيئة الدوت نت

بدأه Mohammad Elsheimy في 1 أغسطس 2009 · 14 رد · 7,491 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
withdotnet.gif

المحتويات

  • المحتويات
  • نظرة خاطفة
  • مقدمة
  • نظرة على الأصناف
    • الأصناف في System.Net.Mail
    • الأصناف في System.Web.Mail

    [*]سيرفرات SMTP

    [*]التطبيق

    [*]تغيير طريقة إيصال الرسالة

    [*]مثال

    [*]خاتمة

نظرة خاطفة

نقوم في هذا الدرس بإذن الله تعالى بشرح كيفية إرسال رسائل البريد الإلكتروني من خلال بيئة الدوت نت. ويتم ذلك عن طريق خدمة SMTP.

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

مع الدرس مثال عبارة عن برنامج يقوم بإرسال رسائل البريد الإلكتروني من خلال أكثر من مزود لخدمة البريد الإلكتروني E-Mail Service Provider.

مقدمة

بروتوكول نقل البريد Simple Mail Transfer Protocol أو كما يختصر إلى SMTP هو أحد الطرق المميزة والسهلة التي توفر خدمة إرسال رسائل البريد الإلكتروني عن طريق خادم (سيرفر) Server معين يسمح لهذا البروتوكول بالعمل.

منذ ظهور بيئة الدوت نت وهي تسمح للمبرمج بإرسال رسائل البريد الإلكتروني عن طريق الأصناف Classes الموجودة في الـ Namespace المسمى System.Web.Mail وهو موجود في المكتبة System.Web.dll.

مع ذلك، وبظهور بيئة الدوت نت 2.0، ظهرت Namespace جديدة توفر للمبرمج ميزات أعلى وأكثر وأكبر تمكنه من استغلال كافة إمكانات بروتوكول SMTP لإرسال الإيميلات، وهذه الـ Namespace هي System.Net.Mail وهي موجودة في المكتبة System.dll لذلك سوف تجدها دائما في كل برامجك لأنه وكما تعلم ليس هناك استغناء عن المكتبة System.dll.

لهذا، فإنه يمكنك استخدام إما الأصناف الموجودة في System.Web.Mail أو الأصناف الموجودة في System.Net.Mail. مع ذلك الثانية أفضل وأقوى. حتى أنه عند استخدامك لـ System.Web.Mail سوف يقوم الـ Compiler بتحذيرك.

في القسم التالي نتكلم عن أشهر الأصناف Classes والأنواع Types التي ستحتاجها عند تعاملك مع بروتوكول SMTP. لاحظ تشابه الأصناف إلى حد كبير في System.Net.Mail إلى System.Web.Mail. في الكود سوف تلاحظ أيضا أن الفرق بسيط في التعامل لذلك إذا كنت تتعامل مع الدوت نت 1.0 أو حتى أي إصدار تستطيع قراءة هذا الدرس.

نظرة على الأصناف

الأصناف في System.Net.Mail

توفر لك الـ Namespace المسمى System.Net.Mail عدد، ليس بالعدد الكبير، بل عدد مناسب من الأصناف والأنواع التي توفر لك التحكم الكامل في رسالتك وفي طريقة إرسالها باستخدام بروتوكول SMTP بل وتوفر لك خيارات مُفصَّلة جدا في رسالتك.

بالطبع لن تحتاج إلى معرفة جميع الأصناف في هذه الـ Namespace ولكن يجب عليك معرفة ما توفره لك بيئة الدوت نت عند التعامل مع بروتوكول SMTP وهذا يجعلك قادر على تطوير برنامجك في جميع الأبعاد.

التالي هو قائمة بأشهر الأنواع -ربما جميعها- الموجودة في هذه الـ Namespace:

  • SmtpClient:
    واحدة من الأصناف الهامة جدا والأساسية وهي التي توفر لك الإمكانيات لإرسال الرسال. بداية، يجب عليك توفير البيانات المناسبة لهذه الكلاس من خلال الخصائص Host، Port، و EnableSsl والتي تمكنك من خلالها تحديد إعدادات السيرفر Server والذي سوف تقوم بإرسال الرسائل من خلاله. فعلى سبيل المثال إذا كنت تريد إرسال رسائل من بريد إلكتروني Hotmail مثلا سوف تقوم بتحديد إعداداته من خلال هذه الخصائص. سوف نشرح كيفية تحديد الإعدادات لاحقا. بجانب هذا، توفر لك هذه الكلاس الدالة Send() لإرسال الرسائل والدالة SendAsync() لإرسال الرسائل بشكل غير متزامن Asynchronously أي باستخدام الـ Threading. سوف نشرح هذا لاحقا.
  • MailMessage:
    الرسالة التي سوف يتم إرسالها. تحتوي هذه الكلاس على الحقول الخاصة بالرسالة مثل To، CC، Bcc، Subject (عنوان الرسالة)، و Body (نص الرسالة).
  • MailAddress: عبارة عن عنوان بريد إلكتروني. تستخدم هذه الكلاس في حقول الرسالة مثل حقل To لتحديد البريد الإلكتروني الخاص بمستلم الرسالة. تحتوي هذه الكلاس على حقلين الأول هو اسم صاحب البريد والثاني هو البريد نفسه.
  • MailAddressCollection:
    عبارة عن مجموعة Collection من عنواين البريد الإلكتروني أي عبارة عن مجموعة من عناصر MailAddress. تستخدم هذه الكلاس في حقول البريد الإلكتروني للرسالة مثل To، CC، Bcc. وهذا إذا كنت تريد إرسال الرسال لأكثر من شخص.
  • Attachment:
    عبارة عن ملف مرفق مع الرسالة.
  • AttachmentCollection:
    عبارة عن مجموعة Collection من الملفات المرفقة أي من الكلاس Attachment. تستخدم هذه الكلاس في الحقل Attachments الخاص بالرسالة.
  • SmtpException:
    عند حدوث خطأ أثناء إرسال الرسالة يقوم SmtpClient بإصدار هذا الخطأ. يحتوي هذا الكلاس على الخاصية StatusCode والتي توفر لك طريقة معرفة ما هو الخطأ الذي حدث.
  • SmtpFailedRecipientException و SmtpFailedRecipientsException:
    الاثنان هما أيضا عناصر خطأ Exception ينحدرا Inherit من العنصر SmtpException. إذا لم يستطع SmtpClient إرسال الرسالة إلى شخص معين سوف يقوم بإصدار الخطأ SmtpFailedRecipientException والذي يحتوي على عنوان بريد إلكتروني هذا الشخص. أما إذا فشل SmtpClient في إرسال الرسالة لعدة أشخاص سوف يقوم بإصدار الخطأ SmtpFailedRecipientsException والذي بدوره يحتوي على عناوين الأشخاص الذين لم ترسل إليهم الرسالة.

بالإضافة إلى هذه التصنيفات تحتوي هذه الـ Namespace وهي System.Net.Mail على العديد من الـ Enumerations لأغراض معينة مثل MailPriority وتمثل أهمية الرسالة إما Low أ، Normal أ، High. وتستخدم هذه الـ Enumeration في الحقل Priority الخاص بالرسالة أي في الكلاس MailMessage.

الأصناف في System.Web.Mail

إذا كنت مهتما بالأصناف Classes الموجودة في System.Web.Mail ستجد أنها شبيهة جدا -إن لم تكن مماثلة- للأصناف في System.Net.Mail. ستجد أيضا أنها عبارة عن ثلاثة أصناف Classes وثلاثة Enumerations فقط!

لا تنسى أن هذه الأصناف موجودة في المكتبة System.Web.dll ولذلك يتوجب عليك إضافتها إلى مشروعك قبل البدأ في التعامل مع هذه الأصناف.

التالي هو قائمة بالأصناف في System.Web.Mail:

  • SmtpMail:
    هذا العنصر شبيها جدا -بل مماثل- للعنصر System.Net.Mail.SmtpClient ويعمل نفس العمل وله نفس الحقول Fields.
  • MailMessage:
    هو عنصر مماثل للعنصر System.Net.Mail.MailMessage ويمثل الرسالة التي سوف ترسل باستخدام SmtpMail.
  • MailAttachment:
    عبارة عن ملف مرفق مع الرسالة. مماثل للعنصر System.Net.Mail.Attachment.

أما الـ Enumerations الموجودة في هذه الـ Namespace فهي MailEncoding، MailFormat و MailPriority. تمثل الأولى نظام الـ Encoding الخاص بالرسالة وهو في الغالب لن تحتاج إلى تغييره. وتمثل الثانية MailFormat نوع الرسالة هل هي رسالة HTML أم رسالة نصية عادية. سوف نقوم بشرح كيفية إرسال الرسائل HTML لاحقا. والثالثة MailPriority تمثل أهمية الرسالة Low أ، Normal أ، High.

نتكلم اليوم عن الطريقة الأفضل والأقوى وهي باستخدام العناصر من System.Net.Mail. إذا كنت تفضل System.Web.Mail فالكود سوف يكون شبيها جدا. فقط قم بتغيير أسماء العناصر وعمل اللازم.

سيرفرات SMTP

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

بالطبع يمكنك إنشاء السيرفر الخاص بك والذي يوفر خدمة SMTP. وبالطبع أيضا يمكنك شراء سيرفر أو على الأقل الاشتراك في سيرفر يوفر لك هذه الخدمة. فتستطيع مثلا من خلال خدمة الاستضافة Hosting الخاصة بموقعك أن تقوم بإنشاء بريد إلكتروني مثلا yourname@yoursite.com وتقوم بإرسال الرسائل من خلاله. ولكن يشترط في هذه الاستضافة أن يكون السيرفر يوفر لك كما قلنا خدمة SMTP.

ولكي تستطيع التعامل مع أي سيرفر SMTP يجب عليك أن تعرف عن هذه السيرفر أربعة أشياء:

  • العنوان Address:
    عنوان السيرفر مثلا smtp.example.com.
  • المخرج Port:
    بالطبع يوفر لك السيرفر الخدمة SMTP عن طريق مخرج معين وهو في الغالب 25 وأحيانا يكون 465 وأحيانا يختلف.
  • هل هذا السيرفر يدعم تأمين SSL؟
    معظم السيرفرات تدعم تأمين SSL وهو Secure Socket Layer. تأمين SSL يقوم بتشفير البيانات أثناء نقلها وبالتالي يمنح الرسالة حماية ضد أن يقوم شخص Hacker بالحصول عليها وفهمها أو تغييرها قبل وصولها إلى المستخدم.
  • الاعتمادات Credentials:
    أي اسم المستخدم وكلمة المرور.

بالطبع تعرف أن هذه الإعدادات الخاصة بالسيرفر سوف تقوم بتحديدها عن طريق حقول System.Net.Mail.SmtpClient أو System.Web.Mail.SmtpMail.

التالي هي قائمة بأشهر أربعة موفروا لخدمة البريد الإلكتروني E-Mail Service Providers والإعدادات الخاصة بهم:

Live العنوان Address smtp.live.com المخرج Port 25 يدعم SSL؟ نعم GMail العنوان Address smtp.gmail.com يدعم SSL؟ 25 أ، 465 نعم Yahoo! العنوان Address plus.smtp.mail.yahoo.com المخرج Port 465 أ، 25 أ، 587 يدعم SSL؟ نعم/لا هذه الخدمة متاحة فقط لمشتركي Yahoo Plus! أي غير المشتركين المجانيين. GMX العنوان Address mail.gmx.com المخرج Port 25 يدعم SSL؟ لا

كما تعلم أن Live يمثل جميع خدمات البريد الإلكتروني لـ Live مثل Live، Hotmail، MSN، ... وغيرها. وأيضا Gmail يمثل Gmail و GoogleMail فهي مجرد أسماء فقط.

أي سيرفر أو موفر للبريد الإلكتروني في الغالب يوفر SMTP. فقط قم بزيارة صفحات الدعم Support الخاصة بهذا السيرفر أو الموفر وعمل بحث عن خدمة SMTP.

بعض السيرفرات مثل Gmail و Yahoo! توفر لك أكثر من مخرج Port. فقط قم باختيار أي منها ليس هناك فرق. وبعض السيرفرات مثل Yahoo! لا تضع شروطا لدعم SSL فلهذا يمكنك اختياره أو تركه ولكن يفضل اختيار SSL.

بعض السيرفرات تجعل لك حدا يوميا لإرسال الرسائل باستخدام SMTP. فعلى سبيل المثال Gmail يضع حدا أعلى للرسائل من على SMTP وهو 100 رسالة يوميا. أما من خلال الموقع أو البرنامج الخاص بـ Gmail الحد الأعلى له هو 400 رسالة يوميا.

التطبيق

الكود التالي يقوم بإرسال رسالة من حساب GMX إلى حساب آخر باستخدام العناصر من System.Net.Mail. لاحظ الكود جيدا. لاحظ أن الرسالة هي عبارة عن رسالة HTML. ولاحظ أن المثال يقوم بإضافة ملف مرفق إلى الرسالة وبالطبع سوف يحدث خطأ إن لم يكن هذا الملف موجود على جهازك. ولاحظ أيضا كيفية تحديد إعدادات السيرفر.

يمكنك زيارة موقع
وإنشاء حساب خاص عليه.

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

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

قمت بوضع بعض الملاحظات حول الكود لتوضيحه.

يجب عليك إضافة جملة using (Imports في VB.NET) للـ Namespace المسمى System.Net.Mail.

	// C# Code

	   MailMessage msg = new MailMessage();

	   // Your mail address and display name.
	   // This what will appear on the From field.
	   // If you used another credentials to access the SMTP server, the mail message would be
	   // sent from the mail specified in the From field on behalf of the real sender.
	   msg.From = new MailAddress("example@GMX.com", "Example");

	   // To addresses
	   msg.To.Add("friend_a@example.com");
	   msg.To.Add(new MailAddress("friend_b@example.com", "Friend A"));

	   // You can specify CC and BCC addresses also

	   // Set to high priority
	   msg.Priority = MailPriority.High;

	   msg.Subject = "Hey, a fabulous site!";

	   // You can specify a plain text or HTML contents
	   msg.Body = "Hello everybody,<br /> <br /> I found an interesting site called " +
		   "<a href=\"http://WithDotNet.Wordpress.com\">مع الدوت نت</a>. Be sure to visit it soon.";
	   // In order for the mail client to interpret message body correctly, we mark the body as HTML
	   // because we set the body to HTML contents.
	   msg.IsBodyHtml = true;

	   // Attaching some data
	   msg.Attachments.Add(new Attachment("C:\\Site.lnk"));

	   // Connecting to the server and configuring it
	   SmtpClient client = new SmtpClient();
	   client.Host = "mail.gmx.com";
	   client.Port = 25;
	   client.EnableSsl = false;
	   // The server requires user's credentials not the default credentials
	   client.UseDefaultCredentials = false;
	   // Provide your credentials
	   client.Credentials = new System.Net.NetworkCredential("example@GMX.com", "buzzwrd");

	   // Use SendAsync to send the message asynchronously
	   client.Send(msg);

	' VB.NET Code

	   Dim msg As New MailMessage()

	   ' Your mail address and display name.
	   ' This what will appear on the From field.
	   ' If you used another credentials to access the SMTP server, the mail message would be
	   ' sent from the mail specified in the From field on behalf of the real sender.
	   msg.From = New MailAddress("example@GMX.com", "Example")

	   ' To addresses
	   msg.To.Add("friend_a@example.com")
	   msg.To.Add(New MailAddress("friend_b@example.com", "Friend A"))

	   ' You can specify CC and BCC addresses also

	   ' Set to high priority
	   msg.Priority = MailPriority.High

	   msg.Subject = "Hey, a fabulous site!"

	   ' You can specify a plain text or HTML contents
	   msg.Body = "Hello everybody,<br /> <br /> I found an interesting site called " & _
		   "<a href=""http://WithDotNet.Wordpress.com""> مع الدوت نت</a>. Be sure to visit it soon."
	   ' In order for the mail client to interpret message body correctly, we mark the body as HTML
	   ' because we set the body to HTML contents.
	   msg.IsBodyHtml = True

	   ' Attaching some data
	   msg.Attachments.Add(New Attachment("D:\Site.lnk"))

	   ' Connecting to the server and configuring it
	   Dim client As New SmtpClient()
	   client.Host = "mail.gmx.com"
	   client.Port = 25
	   client.EnableSsl = False
	   ' The server requires user's credentials not the default credentials
	   client.UseDefaultCredentials = False
	   ' Provide your credentials
	   client.Credentials = New System.Net.NetworkCredential("example@GMX.com", "buzzwrd")

	   ' Use SendAsync to send the message asynchronously
	   client.Send(msg)

تغيير طريقة إيصال الرسالة

ماذا إن كنت تريد تجربة برنامجك فقط؟ ماذا إن كنت تريد مشاهدة الرسالة ولكن لا تريد إرسالها؟

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

لتغيير طريقة إيصال الرسالة Delivery Method يوفر لك العنصر SmtpClient خاصيتان هما DeliveryMethod و PickupDirectoryLocation. الخاصية DeliveryMethod تحدد طريقة وصول الرسالة وهي عبارة عن عنصر من الـ Enumeration المسمى SmtpDeliveryMethod وبالتالي تأخذ أحد القيم التالية:

  • Network (الأساسي):
    ترسل الرسالة عن طريق الشبكة. أي أن الرسالة ترسل وتصل إلى المستلم الحقيقي.
  • PickupDirectoryFromIis:
    ترسل الرسالة إلى مجلد على الجهاز تستطيع تحديده من خلال Internet Information Services (IIS).
  • SpecifiedPickupDirectory:
    ترسل الرسالة إلى مجلد على الجهاز تستطيع تحديده من الخاصية الأخرى وهي PickupDirectoryLocation.

قم بزيارة الدعم Support الخاص بـ IIS لمعرفة طريقة تغيير مجلد وصول الرسالة في حالة اختيارك SmtpDeliveryMethod.PickupDirectoryFromIis.

الكود التالي يوضح كيفية جعل الرسائل ترسل إلى مجلد معين على الجهاز. لاحظ أنه إذا لم يكن المجلد المحدد موجودا على الجهاز سوف يحدث خطأ ولن يتم إرسال الرسالة. قم بإضافة هذا الكود قبل النداء على دالة Send() أو SendAsync().

	// C# Code

	   client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
	   client.PickupDirectoryLocation = "C:\\mails";

	' VB.NET Code

	   client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory
	   client.PickupDirectoryLocation = "C:\mails"

مثال

برنامج Geming Mail+ عبارة عن برنامج يقوم بإرسال رسائل البريد الإلكتروني من خلال أكثر من مزود لخدمة البريد الإلكتروني E-Mail Service Provider والذي يدعم خدمة SMTP.

تم تطوير البرنامج باستخدام C# والدوت نت 2.0. ليس هناك متطلبات لتشغيل الكود فقط Visual Studio 2005 أو إصدار أعلى. التالي هو بعض صور من البرنامج.

خاتمة

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

تم تعديل هذه المشاركة بواسطة Mohammad Elsheimy في 1 أغسطس 2009 في 15:10

#2

شكرا :D:D

#3

متألق كعادتك يا ريس ! :D

شكرا أخى محمد الشيمى جازاك الله خيرا

#4

السلام عليكم ورحمة الله وبركاته ،،،جزيت خيرا يااخ محمد وانا عندي استفسار وياليت ترد عليه وهذا الاسفسار كالتالي

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

اي انشئ قاعدة بيانات تحتوي على الحسابات والصادر والوارد

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

لكن المشكلة في الاستقبال للرسائل يعني

1- كيف انشئ سيرفر مثل smtp.gmail.com

2- الحسابات اللتي انشئها كيف سيتم الاسال من اي ايميل اليها

3-كتوضيح هل استطيع انشاء سيرفر مثلا smtp.mycompany.com هل يمكن ذالك

واذا ممكن كيف بتصير الحسابات تبع هذا السيرفر ،،،

الفكرة انشاء بريد كالجيميل والهوتميل ارجو من سعادتك التكرم بالرد واذا كان سوالي غير واضح ارجوا الاشارة الى ذالك

#5

تحية طيبة :

شكرا جزيلا لك أخي .. ابداعك هو ما عودتنا عليه ..

اريد ان اسال سؤالا ..

لماذا كان الاسم للخدمة SMTPClient وليس SMTPServer .. اليس الهوتميل أو الجيميل او غيرها عبارة عن سيرفرات ونحن بالنسبة اليهم زبائن (Client) .. أم أن هناك طريقة في تصنيف ما هو الClient وما هو ال server ?

دمتم بخير،

خالد الكخن.

تم تعديل هذه المشاركة بواسطة خالد حاتم كخن في 3 أغسطس 2009 في 23:22

#6

السلام عليكم

أولا شكرا لكم جميعا وجزاكم الله خيرا

ثانيا بالنسبة لسؤال الأخ Enjo with CSharp فعلا يمكنك عمل ذلك ويتم ذلك عن طريق خدمة SMTP والتي يمكن تنصيبها على الجهاز. ويمكنك التحكم بها من خلال IIS. ولكن للأمانة حقيقة أنا ما جربتهاش قبل كده ولكن الموضوع ده مكتوب فيه الطريقة بإذن الله ينفع:

http://www.codeproject.com/KB/aspnet/techblaster.aspx

بالنسبة للأخ خالد، احنا Client بالنسبة للهوتميل والياهو علشان كده اسم العنصر هو SmtpClient ولكن هو كان المفروض يسمى SmtpServer علشان خاطر الخصائص اللي فيه. وأيضا المفروض يسمى SmtpClient علشان خاطر إننما Client بالنسبة للسيرفر وإنه يحوي الدالة Send واللي بتؤمر السيرفر إنه يبعت الرسالة. بجد مش عارف أقوللك ايه :wacko:

تحياتي للجميع

#7

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

كله هذا مفهوم ،،، :rolleyes: ولكن ماذا لو اراد الواحد يسوي خدمة مثل الجيميل او الهوتميل اكيد لازم يكون عنه التالي

1- smtp ويكون مثلا smtp.namaservies.com

2- هل هذة الطريقة او الخدمة يقدر اي واحد يسويها

وكيف ينشء حسابات ضمن هذه الخدمة اي مثلا ali@nameservies.com

وهل سيتعامل معها الهوتوميل والجيميل والياهو بحيث لو احد رسل م اي حساب اليها بيرسل

لمن عنده خلفية ارجو انه مايبخل علينا

#8

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

#9

شكرا اخ محمد على تجاوبك

#10

شكرا لك , وجزاك الله خيرا , يا استاذ محمد.

#11

شكرا لك اخ محمد ..

صراحة منذ مدة لم ارى شرح برمجي جميل بهذا الشكل ..

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

ان واجهتني ساسلك بالتاكيد ..

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

لكن بفضلك بعد الله استطعت ان افهم الامور بسهولة ويسر ..

---------------------------

لكن لي استفسارين بسيطين ..

الاستفسار 1..

في التطبيق المرفق ( لم احمله بعد ) شئ اريد ان اتخلص منه .. وهو رقم الPort ..

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

لكن بالنسبة للشخص العادي .. الذي يريد ان يستخدم برنامج بسيط .. لا اعتقد انه سيفهم ..

لذلك كيف يمكن ان نتخلص من البورت وجعله افتراضي برمجيا ..

يعني نتخلص منه من الواجهه لكن نجعل اختياره برمجيا .. سيسبصح التطبيق اكثر مرونه برايي ..

اريد منك حلا لهذه النقطه ..

الاستفسار 2 ..

في المثال المرفق الرسالة تكون عبارة عن Html .. هل نستيطع ان نكتب بدلها رسالة فترسل بسهولة ..

يعني هل هي مرنه بحيث ان النص باي شكل يكون .؟

سواء كان رساله او html . ؟

اذا كانت مقتصرة على الـ Html .. فكيف يمكن ان نجعلها مرنة بحيث تقبل الشكلين .. ؟؟

ارجو ان تجيب على اسئلتي .. واذا كانت لدي مشكلة .. ساسلك ايضا بالمستقبل ولكن اكتفي بهذا القدر الان ..

-----------------------------------

شكرا مرة اخرى ..

تحياتي العطرة ..

تم تعديل هذه المشاركة بواسطة سنان محمد صالح في 7 سبتمبر 2009 في 04:08

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#12

السلام عليكم،

أخي سنان أولا آسف على الرد المتأخر لإني لسه فعلا أول مرة أشوف الرد دلوقتي.

بالنسبة لموضوع الـ Port، المثال فقط للتوضيح للمبرمج والمفروض إن ال Port يسجل داخليا ولا يظهر للعميل.

البورت بيكون في الغالب لخدمة SMTP بيكون 25 أو 587 أو 465 وده حسب السيرفر اللي بيحدده. يعني مثلا السيرفر Gmail بيسمح بالثلاثة لكن في الغالب يعمل على 587 http://mail.google.com/support/bin/answer.py?hl=en&answer=13287.

فانت المفروض بترجع للسيرفر تشوف الإعدادات بتاعته.

بالنسبة للرسالة، انت عندك خاصية اسمها IsHtmlBody بتحدد هل الرسالة نصية عادية أو HTML.

#13
650446949.gif

749698306.gif

أخي الكريم محمد .. جزاك الله خيراً .. شرح أكثر من مميز .

لقد بنيت التطبيق الخاص بي بمساعدة الكود الذي وضعته .. وتم اختباره من الايميل المرسل من حساب gmx بنجاح ..

لكن عندما حاولت تغيير الايميل المرسل إلى hotmail مع تغيير الاعدادات المناسبة (server host, password) أعطاني الـ exception التالي كما هم موضح بالصورة :

78370557.png

مع العلم أني كما ذكرت : التزمت بتغيير جميع الاعدادات الخاصة بالمخدم الموضحة بالموضوع الرئيسي ..

وشكراً لكم جميعاً .. تحياتي.

515986359.gif
#14

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

ودا نص الكود

Imports System.Net.Mail
Imports System.Net.Mail.MailMessage
Imports System.Net.NetworkCredential
Imports System.Net.Dns

Public Class Form2

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim msg As New MailMessage()
        msg.From = New MailAddress("mohamed.nor.eldin@gmail.com", "Example")
        msg.To.Add("mohamed_nor_eldin@hotmail.com")
        msg.To.Add(New MailAddress("mohamed_nor_eldin@hotmail.com", "Friend A"))
        msg.Priority = MailPriority.High
        msg.Subject = "Hey, a fabulous site!"
        msg.Body = "Hello everybody,<br /> <br /> I found an interesting site called " & _
                "<a href=""http://WithDotNet.Wordpress.com""> مع الدوت نت</a>. Be sure to visit it soon."
        msg.IsBodyHtml = True
        msg.Attachments.Add(New Attachment("D:\Site.pop"))
        Dim client As New SmtpClient()
        client.Host = "mail.gmail.com"
        client.Port = 25
        client.EnableSsl = False
        client.UseDefaultCredentials = False
        client.Credentials = New System.Net.NetworkCredential("mohamed.nor.eldin@gmail.com", "1111")
        client.Send(msg)
    End Sub

post-142726-061455400 1333385331_thumb.j

المرفقات
untitled.jpg
#15

الف شكر يا باشا انا لقيت حل للمشكله وارجو من الاخوه الانتباه لها فى السطر التالى

client.Host = "smtp.gmail.com"

يجب استبدال كلمة mail الموجوده بالمثال اعلاه بكلمة smtp البروتوكول المستخدم

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