15-09-12, 12:30 AM
تابع,,,,,, الحدث Click الخاص بالزر إرسال
الآن سندخل في مرحلة إعداد تصميم شكل الرسالة
[b]تذكر أن الرسالة على شكل Html
يعني بإمكانك تصميم صفحة Html
وإرسالها كرسالة طبعاً بعد إدخال نص الرسالة في كود الـ HTML وإدخال بعض الصور ستكون جاهزة للإرسال [/b]
[b]نبدأ في صورة الشعار وفي هذا المثال وضعتة في أعلى الرسالة[/b]
المتغير logo وهو من نوع LinkedResources وهو ما يعرف بربط الموارد ,, قمنا بالإعلان عنه مسبقاً ولكن الآن سنعطيه قيمة حقيقية بالجملة New
المتغير [b]CompanyLogoPath يحمل عنوان مسار الصورة
أي أننا نريد ربط هذة الصورة مع الرسالة
رمز برمجي:
logo = New LinkedResource(CompanyLogoPath)
[b]الآن ركز معي في عملية ربط هذة الصورة بموقعها داخل كود الـ HTML
كلنا نعرف هذة الطريقة لإضافة صورة في جسم الـ HTML فعنوان الصورة معروف مكانة في الإنترنت
رمز برمجي:
<img src='http://vb4arab.com/vb/attachments/logo.jpg' >
لكن الصورة التي سنرفقها مع الرسالة أين ستذهب وما هو المسار الذي ستوضع فية
لا نعرف العنوان الخاص بالصورة
لذلك سنستخدم طريقة الربط بالإسم المعرف للصورة وهو ما يعرف بربط الموارد
-------------------------------------------------------------------------
بعد أن قمنا بتحميل الصورة في المتغير logo
الآن نعطيه اسم سنستخدمة داخل الـ Html حتى يتم عرظها في الرسالة
--------------------------------------------------------
رمز برمجي:
'- الآن نعطي إسم لهذة الصورة وهو MyLogo logo.ContentId = "MyLogo"
الآن نقوم بعمل متغير نصي لنحفظ فية كود الـ HTML الخاص بالصورة
رمز برمجي:
Dim My_Logo As String
نقوم بإنشاء الكود الخاص بالصورة بنسق HTML
رمز برمجي:
My_Logo = "<img src='cid:" & logo.ContentId & "' height='150' width='750'>"
ملاحظة :
كلمة cid: الموجودة في خانة عنوان الصورة هي للتعريف بأن الصورة موجودة ظمن الموارد الخاصة بالرسالة ويتم التعرف على الصورة من خلال الاسم الذي أعطيناه لها من قبل وهو
موجود في logo.ContentId
تذكر أن المتغير MessageContaint قمنا بالإعلان عن مسبقاً وأعطيناه القيمة الموجودة في الملف HTMLBodyText.htm الموجود في الريسورس
سندخل كود الـ HTML الخاص بالصورة بعد أن رتبنا عملية الربط
وسندخل عنوان الرسالة بالخط العريط حسب التنسيق الذي حددتة في ملف الـ HTML
وسندخل نص الرسالة
لاحظ الصور ستكون أكثر توظيحاً
الآن ومن خلال الكود نقوم بعملية إستبدال للنصوص الموجودة في المتغير النصي MessageContaint والذي يحمل قيمة ملف الـ HTML بالكامل
رمز برمجي:
MessageContaint = MessageContaint.Replace("MY_LOGO", My_Logo) MessageContaint = MessageContaint.Replace("MY_MAIL_SUBJECT", Me.MailSubject.Text & "<hr/>") MessageContaint = MessageContaint.Replace("MY_MESSAGE_BODY_TEXT", Me.MessageBody.Text)
--------------------------------------------------------------------------------
النص الموجود في ملف الـ HTML
MY_LOGO
سيصبح
<img src='cid:MyLogo' height='150' width='750'>
--------------------------------------------------------------------------------
النص الموجود في ملف الـ HTML
MY_MAIL_SUBJECT
سيتم إستبدالة بالنص الموجود في
Me.MailSubject.Text
--------------------------------------------------------------------------------
النص الموجود في ملف الـ HTML
MY_MESSAGE_BODY_TEXT
سيتم إستبدالة بالنص الموجود في
Me.MessageBody.Text
--------------------------------------------------------------------------------
لكي تصبح النتيجة كالتالي مثل الصورة التالية فقط للتوضيح
هذة هي النتيجة بعد إستبدال النصوص الموجودة في ملف الـ HTML
تم الإنتهاء من تنسيق ملف الـ HTML
Alternate View
وهو ما يسمى بطريقة العرض البديله
أي أننا لا نريد أن تكون الرسالة على شكل نص عادي
بل نريدها أن تكون على شكل HTML
نقوم بعمل متغير من نوع AlternateView لأنه لدية الإمكانية على الظهور بنسق HTML
وهو الذي سيحمل النص الموجود في المتغير MessageContaint
أول براميتر هو محتوى الرسالة MessageContaint
ثاني براميتر للتعريف بنوع الترميز الخاص بكود الـ HTML
لاحظ في آخر براميتر قمنا بتعريف أن محتوى الرسالة هو من نوع Html
رمز برمجي:
Dim alternateView1 As AlternateView = AlternateView.CreateAlternateViewFromString( _ MessageContaint, _ System.Text.Encoding.UTF8, _ System.Net.Mime.MediaTypeNames.Text.Html)
الآن نقوم بإظافة الصورة للموارد الخاصة بـ alternateView1 حتى نستطيع إظهار الصورة في الرسالة
رمز برمجي:
alternateView1.LinkedResources.Add(logo)
هنا نقوم بإدخال محتوى الرسالة بالكامل alternateView1 داخل كائن الرسالة Mail
رمز برمجي:
Mail.AlternateViews.Add(alternateView1)
يجب أن تجعل هذا الخيار True
وهو للدلالة على أن الرسالة بتنسيق من نوع HTML
رمز برمجي:
Mail.IsBodyHtml = True
خيارات التبليغ بالتسليم
هنا إذا أردت أن يتم تبليغك برسالة بريد إلكترونية في أي حالة من الحالات التالية
والتي ستختارها أو ستحددها هنا
بإمكانك إختيار أحد الخيارات التالية
----------------------------------------------------------
إيقاف خاصية التبليغ
DeliveryNotificationOptions.None
----------------------------------------------------------
في حال تم وصول الرسالة بنجاح إلى الطرف الآخر
DeliveryNotificationOptions.OnSuccess
----------------------------------------------------------
في حال فشلت الرسالة بالوصول
DeliveryNotificationOptions.OnFailure
----------------------------------------------------------
في حال تأخرة الرسالة في الوصول
DeliveryNotificationOptions.Delay
----------------------------------------------------------
لن يتم تبليغك بأي شيء أبداً
DeliveryNotificationOptions.Never
----------------------------------------------------------
في هذا المثال قمت بإختيار
في حال فشلت الرسالة بالوصول
DeliveryNotificationOptions.OnFailure
رمز برمجي:
Mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure
الآآآآآآآآآآآآآآآآن وصلنا إلى إرسال الرسالة
وتوجد هنا طريقتين
SendAsync و Send
##############################################
الطريقة SendAsync
تسمح هذة الطريقة بإستمرارية عمل البرنامج أثناء عملية الإرسال
أي أن الكود لن يتوقف عند هذة النقطة بل سيكمل حتى الخروج من الحدث Click الخاص بالزر إرسال وفي نفس الوقت عملية الإرسال جاريه ,,
أيضاً تسمح لك بإلغاء العملية في أي وقت عن طريق الأمر SendAsyncCancel
وتقوم بعد إنتهاء عملية الإرسال مباشرتاً بإطلاق الحدث SendCompleted
بإمكانك إستخدام الحدث لإظهار رسالة مثلاً تبين أن العملية قد إنتهت
---------------------------------------------------------------------
البراميتر الثاني أعطيته القيمة Nothing وهو عبارة عن كائن من نوع Object ويتم إستخدامة ليتم تمريرة مع الرسالة لكي يتم كتابة بيانات حالة الإرسال فية من قبل خادم البريد وعند
الإنتهاء من عملية الإرسال يتم إرجاعة لك في الحدث SendCompleted
فقط الطريقة SendAsync هي التي توفر هذة الطريقة
---------------------------------------------------------------------
رمز برمجي:
SmtpServer.SendAsync(Mail, Nothing)
##############################################
الطريقة Send
فهي لا تسمح بإستمرارية الكود إلى بعد الإنتهاء من عملية الإرسال
ولا تقوم بإطلاق الحدث SendCompleted
ولا تسمح لك بإلغاء العملية
ولا تدعم طريقة تمرير لكائن Object التي ذكرتها في الطريقة السابقة
أي أنه عن الوصول إلى هذا الأمر يتجمد البرنامج عند هذا السطر حتى إنتهاء العملية
رمز برمجي:
SmtpServer.Send(Mail)
##############################################
وفي هذا المثال إستخدمت الطريقة SendAsync
وبما أننا إستخدمنا الطريقة SendAsync فإن الكود سينتقل مباشرتاً إلى السطر الذي بعدة
مع إبقاء عملية الإرسال في الخلفية ,, لذلك بإمكانك ترتيب شكل الفورم في وضع الإرسال ,, يعني تقوم بتعطيل زر الإرسال ,, تظهر صورة تبين عملية الإرسال ,,
أي شيء تريد عملة ,, لأنه ومن خلال الحدث SendCompleted نستطيع الرجوع عن هذة التغييرات مع إظهار رسالة تبين إنتهاء عملية الإرسال ,,,,,
ليس بالظرورة أن عملية الإرسال تمت بنجاح يعني أن الرسالة قد وصلت
أنت قمت بتوصيل الرسالة إلى الخادم بنجاح ,, ولكن لا نعلم إذا كان الخادم قد نجح هو بدورة في توصيل الرسالة إلى المستلمين ..
[b]إنتهاء الحدث Click الخاص بالزر إرسال
################################################## #####
################################################## #####
حدث Click الخاص بزر بإضافة ملفات مرفقة
################################################## #####
################################################## #####
رمز برمجي:
Private Sub AddNewAttachment_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AddNewAttachment.Click '- OAFD = Open Attachment File Dialog Dim OAFD As New OpenFileDialog OAFD.CheckFileExists = True OAFD.Title = "إضافة ملفات مرفقة للرسالة" If OAFD.ShowDialog() = Windows.Forms.DialogResult.OK Then Me.AttachmentCollection.Add(OAFD.FileName) DeleteSelectedAttachment.Enabled = True '- سيتم إضافة إسم الملف هنا فقط ليراه المستخدم في المثال Attachment_ListBox.Items.Add(My.Computer.FileSystem.GetName(OAFD.FileName)) End If End Sub
################################################## #####
توجد طريقة أخرى لإضافة الملفات المرفقة عن طريق السحب والإفلات في المشاركة رقم 43
################################################## #####
هذا الزر الخاص بإلغاء عملية الإرسال
################################################## #####
################################################## #####
رمز برمجي:
Private Sub CancelSendAsync_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CancelSendAsync.Click Me.SmtpServer.SendAsyncCancel() Me.PictureBox1.Visible = False Me.MailFormPanel.Enabled = True Me.SendMassege.Enabled = True Me.PreveiwMassege.Enabled = True Me.CancelSendAsync.Enabled = False End Sub
################################################## #####
################################################## #####
[b]هذا هو الحدث SendCompleted
################################################## #####
################################################## #####
رمز برمجي:
'- SendCompleted Event '- هذا الحدث الذي يتم إطلاقة عند إنتهاء عملية الإرسالأنا عن نفسي قمت بتعطيل وتفعيل بعض الأزرار وإخفاء الصورة التي توحي بعملية الإرسالمع إظهار رسالة تخبر بإنتهاء العملية بنجاح Private Sub SmtpServer_SendCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles SmtpServer.SendCompleted Me.PictureBox1.Visible = False Me.MailFormPanel.Enabled = True Me.SendMassege.Enabled = True Me.PreveiwMassege.Enabled = True Me.CancelSendAsync.Enabled = TrueMsgBox("تم إرسال البريد بنجاح ..") End Sub
################################################## #####
################################################## #####
لإضافة الحدث ,, هذة صورة من باب إكمال الشرح
تم الإنتهاء من طريقة عرض الرسالة بنسق HTML
----------------------------------------------------------------------------------------------
طريقة عرض الرسالة بدون تنسيق ( العادية)
هو نفس الكود الذي تم شرحه من قبل ولكن لا يحتوي على أي شيء له علاقة بالـ HTML
بالإضافة إلى أن بعض المتغيرات ليست موجود لأن ليس لها فائدة في هذة الطريقة
بالإضافة إلى عدم وجود ملف HTML في الريسورس
وعدم وجود صورة الشعار ظمن ملفات المشروع
قبل تحميل المشروع أرجوا قراءة هذة الملاحظة في المشاركة رقم 25
[b]ملفات المشروع بنسخة الفيجوال 2005
-------------------------------------------
مشروع للإرسال بنسق HTML
Send.EMail.With.Html.VB2005.rar
مشروع للإرسال بشكل عادي
Send.EMail.WithOut.Html.VB2005.rar
ملفات المشروع بنسخة الفيجوال 2008
------------------------------------------
مشروع للإرسال بنسق HTML
Send EMail With Html VB2008.rar
مشروع للإرسال بشكل عادي
Send EMail WithOut Html vb2008.rar
تم بحمد الله
أرجوا أن أكون وفقت في طريقة الشرح
تحياتي لكم ,, ودمتم بخير
دعواتكم الصالحة
[/b][/b][/b][/b][/b]
الآن سندخل في مرحلة إعداد تصميم شكل الرسالة
[b]تذكر أن الرسالة على شكل Html
يعني بإمكانك تصميم صفحة Html
وإرسالها كرسالة طبعاً بعد إدخال نص الرسالة في كود الـ HTML وإدخال بعض الصور ستكون جاهزة للإرسال [/b]
[b]نبدأ في صورة الشعار وفي هذا المثال وضعتة في أعلى الرسالة[/b]
المتغير logo وهو من نوع LinkedResources وهو ما يعرف بربط الموارد ,, قمنا بالإعلان عنه مسبقاً ولكن الآن سنعطيه قيمة حقيقية بالجملة New
المتغير [b]CompanyLogoPath يحمل عنوان مسار الصورة
أي أننا نريد ربط هذة الصورة مع الرسالة
رمز برمجي:
logo = New LinkedResource(CompanyLogoPath)
[b]الآن ركز معي في عملية ربط هذة الصورة بموقعها داخل كود الـ HTML
كلنا نعرف هذة الطريقة لإضافة صورة في جسم الـ HTML فعنوان الصورة معروف مكانة في الإنترنت
رمز برمجي:
<img src='http://vb4arab.com/vb/attachments/logo.jpg' >
لكن الصورة التي سنرفقها مع الرسالة أين ستذهب وما هو المسار الذي ستوضع فية
لا نعرف العنوان الخاص بالصورة
لذلك سنستخدم طريقة الربط بالإسم المعرف للصورة وهو ما يعرف بربط الموارد
-------------------------------------------------------------------------
بعد أن قمنا بتحميل الصورة في المتغير logo
الآن نعطيه اسم سنستخدمة داخل الـ Html حتى يتم عرظها في الرسالة
--------------------------------------------------------
رمز برمجي:
'- الآن نعطي إسم لهذة الصورة وهو MyLogo logo.ContentId = "MyLogo"
الآن نقوم بعمل متغير نصي لنحفظ فية كود الـ HTML الخاص بالصورة
رمز برمجي:
Dim My_Logo As String
نقوم بإنشاء الكود الخاص بالصورة بنسق HTML
رمز برمجي:
My_Logo = "<img src='cid:" & logo.ContentId & "' height='150' width='750'>"
ملاحظة :
كلمة cid: الموجودة في خانة عنوان الصورة هي للتعريف بأن الصورة موجودة ظمن الموارد الخاصة بالرسالة ويتم التعرف على الصورة من خلال الاسم الذي أعطيناه لها من قبل وهو
موجود في logo.ContentId
تذكر أن المتغير MessageContaint قمنا بالإعلان عن مسبقاً وأعطيناه القيمة الموجودة في الملف HTMLBodyText.htm الموجود في الريسورس
سندخل كود الـ HTML الخاص بالصورة بعد أن رتبنا عملية الربط
وسندخل عنوان الرسالة بالخط العريط حسب التنسيق الذي حددتة في ملف الـ HTML
وسندخل نص الرسالة
لاحظ الصور ستكون أكثر توظيحاً
الآن ومن خلال الكود نقوم بعملية إستبدال للنصوص الموجودة في المتغير النصي MessageContaint والذي يحمل قيمة ملف الـ HTML بالكامل
رمز برمجي:
MessageContaint = MessageContaint.Replace("MY_LOGO", My_Logo) MessageContaint = MessageContaint.Replace("MY_MAIL_SUBJECT", Me.MailSubject.Text & "<hr/>") MessageContaint = MessageContaint.Replace("MY_MESSAGE_BODY_TEXT", Me.MessageBody.Text)
--------------------------------------------------------------------------------
النص الموجود في ملف الـ HTML
MY_LOGO
سيصبح
<img src='cid:MyLogo' height='150' width='750'>
--------------------------------------------------------------------------------
النص الموجود في ملف الـ HTML
MY_MAIL_SUBJECT
سيتم إستبدالة بالنص الموجود في
Me.MailSubject.Text
--------------------------------------------------------------------------------
النص الموجود في ملف الـ HTML
MY_MESSAGE_BODY_TEXT
سيتم إستبدالة بالنص الموجود في
Me.MessageBody.Text
--------------------------------------------------------------------------------
لكي تصبح النتيجة كالتالي مثل الصورة التالية فقط للتوضيح
هذة هي النتيجة بعد إستبدال النصوص الموجودة في ملف الـ HTML
تم الإنتهاء من تنسيق ملف الـ HTML
Alternate View
وهو ما يسمى بطريقة العرض البديله
أي أننا لا نريد أن تكون الرسالة على شكل نص عادي
بل نريدها أن تكون على شكل HTML
نقوم بعمل متغير من نوع AlternateView لأنه لدية الإمكانية على الظهور بنسق HTML
وهو الذي سيحمل النص الموجود في المتغير MessageContaint
أول براميتر هو محتوى الرسالة MessageContaint
ثاني براميتر للتعريف بنوع الترميز الخاص بكود الـ HTML
لاحظ في آخر براميتر قمنا بتعريف أن محتوى الرسالة هو من نوع Html
رمز برمجي:
Dim alternateView1 As AlternateView = AlternateView.CreateAlternateViewFromString( _ MessageContaint, _ System.Text.Encoding.UTF8, _ System.Net.Mime.MediaTypeNames.Text.Html)
الآن نقوم بإظافة الصورة للموارد الخاصة بـ alternateView1 حتى نستطيع إظهار الصورة في الرسالة
رمز برمجي:
alternateView1.LinkedResources.Add(logo)
هنا نقوم بإدخال محتوى الرسالة بالكامل alternateView1 داخل كائن الرسالة Mail
رمز برمجي:
Mail.AlternateViews.Add(alternateView1)
يجب أن تجعل هذا الخيار True
وهو للدلالة على أن الرسالة بتنسيق من نوع HTML
رمز برمجي:
Mail.IsBodyHtml = True
خيارات التبليغ بالتسليم
هنا إذا أردت أن يتم تبليغك برسالة بريد إلكترونية في أي حالة من الحالات التالية
والتي ستختارها أو ستحددها هنا
بإمكانك إختيار أحد الخيارات التالية
----------------------------------------------------------
إيقاف خاصية التبليغ
DeliveryNotificationOptions.None
----------------------------------------------------------
في حال تم وصول الرسالة بنجاح إلى الطرف الآخر
DeliveryNotificationOptions.OnSuccess
----------------------------------------------------------
في حال فشلت الرسالة بالوصول
DeliveryNotificationOptions.OnFailure
----------------------------------------------------------
في حال تأخرة الرسالة في الوصول
DeliveryNotificationOptions.Delay
----------------------------------------------------------
لن يتم تبليغك بأي شيء أبداً
DeliveryNotificationOptions.Never
----------------------------------------------------------
في هذا المثال قمت بإختيار
في حال فشلت الرسالة بالوصول
DeliveryNotificationOptions.OnFailure
رمز برمجي:
Mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure
الآآآآآآآآآآآآآآآآن وصلنا إلى إرسال الرسالة
وتوجد هنا طريقتين
SendAsync و Send
##############################################
الطريقة SendAsync
تسمح هذة الطريقة بإستمرارية عمل البرنامج أثناء عملية الإرسال
أي أن الكود لن يتوقف عند هذة النقطة بل سيكمل حتى الخروج من الحدث Click الخاص بالزر إرسال وفي نفس الوقت عملية الإرسال جاريه ,,
أيضاً تسمح لك بإلغاء العملية في أي وقت عن طريق الأمر SendAsyncCancel
وتقوم بعد إنتهاء عملية الإرسال مباشرتاً بإطلاق الحدث SendCompleted
بإمكانك إستخدام الحدث لإظهار رسالة مثلاً تبين أن العملية قد إنتهت
---------------------------------------------------------------------
البراميتر الثاني أعطيته القيمة Nothing وهو عبارة عن كائن من نوع Object ويتم إستخدامة ليتم تمريرة مع الرسالة لكي يتم كتابة بيانات حالة الإرسال فية من قبل خادم البريد وعند
الإنتهاء من عملية الإرسال يتم إرجاعة لك في الحدث SendCompleted
فقط الطريقة SendAsync هي التي توفر هذة الطريقة
---------------------------------------------------------------------
رمز برمجي:
SmtpServer.SendAsync(Mail, Nothing)
##############################################
الطريقة Send
فهي لا تسمح بإستمرارية الكود إلى بعد الإنتهاء من عملية الإرسال
ولا تقوم بإطلاق الحدث SendCompleted
ولا تسمح لك بإلغاء العملية
ولا تدعم طريقة تمرير لكائن Object التي ذكرتها في الطريقة السابقة
أي أنه عن الوصول إلى هذا الأمر يتجمد البرنامج عند هذا السطر حتى إنتهاء العملية
رمز برمجي:
SmtpServer.Send(Mail)
##############################################
وفي هذا المثال إستخدمت الطريقة SendAsync
وبما أننا إستخدمنا الطريقة SendAsync فإن الكود سينتقل مباشرتاً إلى السطر الذي بعدة
مع إبقاء عملية الإرسال في الخلفية ,, لذلك بإمكانك ترتيب شكل الفورم في وضع الإرسال ,, يعني تقوم بتعطيل زر الإرسال ,, تظهر صورة تبين عملية الإرسال ,,
أي شيء تريد عملة ,, لأنه ومن خلال الحدث SendCompleted نستطيع الرجوع عن هذة التغييرات مع إظهار رسالة تبين إنتهاء عملية الإرسال ,,,,,
ليس بالظرورة أن عملية الإرسال تمت بنجاح يعني أن الرسالة قد وصلت
أنت قمت بتوصيل الرسالة إلى الخادم بنجاح ,, ولكن لا نعلم إذا كان الخادم قد نجح هو بدورة في توصيل الرسالة إلى المستلمين ..
[b]إنتهاء الحدث Click الخاص بالزر إرسال
################################################## #####
################################################## #####
حدث Click الخاص بزر بإضافة ملفات مرفقة
################################################## #####
################################################## #####
رمز برمجي:
Private Sub AddNewAttachment_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AddNewAttachment.Click '- OAFD = Open Attachment File Dialog Dim OAFD As New OpenFileDialog OAFD.CheckFileExists = True OAFD.Title = "إضافة ملفات مرفقة للرسالة" If OAFD.ShowDialog() = Windows.Forms.DialogResult.OK Then Me.AttachmentCollection.Add(OAFD.FileName) DeleteSelectedAttachment.Enabled = True '- سيتم إضافة إسم الملف هنا فقط ليراه المستخدم في المثال Attachment_ListBox.Items.Add(My.Computer.FileSystem.GetName(OAFD.FileName)) End If End Sub
################################################## #####
توجد طريقة أخرى لإضافة الملفات المرفقة عن طريق السحب والإفلات في المشاركة رقم 43
################################################## #####
هذا الزر الخاص بإلغاء عملية الإرسال
################################################## #####
################################################## #####
رمز برمجي:
Private Sub CancelSendAsync_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CancelSendAsync.Click Me.SmtpServer.SendAsyncCancel() Me.PictureBox1.Visible = False Me.MailFormPanel.Enabled = True Me.SendMassege.Enabled = True Me.PreveiwMassege.Enabled = True Me.CancelSendAsync.Enabled = False End Sub
################################################## #####
################################################## #####
[b]هذا هو الحدث SendCompleted
################################################## #####
################################################## #####
رمز برمجي:
'- SendCompleted Event '- هذا الحدث الذي يتم إطلاقة عند إنتهاء عملية الإرسالأنا عن نفسي قمت بتعطيل وتفعيل بعض الأزرار وإخفاء الصورة التي توحي بعملية الإرسالمع إظهار رسالة تخبر بإنتهاء العملية بنجاح Private Sub SmtpServer_SendCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles SmtpServer.SendCompleted Me.PictureBox1.Visible = False Me.MailFormPanel.Enabled = True Me.SendMassege.Enabled = True Me.PreveiwMassege.Enabled = True Me.CancelSendAsync.Enabled = TrueMsgBox("تم إرسال البريد بنجاح ..") End Sub
################################################## #####
################################################## #####
لإضافة الحدث ,, هذة صورة من باب إكمال الشرح
تم الإنتهاء من طريقة عرض الرسالة بنسق HTML
----------------------------------------------------------------------------------------------
طريقة عرض الرسالة بدون تنسيق ( العادية)
هو نفس الكود الذي تم شرحه من قبل ولكن لا يحتوي على أي شيء له علاقة بالـ HTML
بالإضافة إلى أن بعض المتغيرات ليست موجود لأن ليس لها فائدة في هذة الطريقة
بالإضافة إلى عدم وجود ملف HTML في الريسورس
وعدم وجود صورة الشعار ظمن ملفات المشروع
قبل تحميل المشروع أرجوا قراءة هذة الملاحظة في المشاركة رقم 25
[b]ملفات المشروع بنسخة الفيجوال 2005
-------------------------------------------
مشروع للإرسال بنسق HTML
Send.EMail.With.Html.VB2005.rar
مشروع للإرسال بشكل عادي
Send.EMail.WithOut.Html.VB2005.rar
ملفات المشروع بنسخة الفيجوال 2008
------------------------------------------
مشروع للإرسال بنسق HTML
Send EMail With Html VB2008.rar
مشروع للإرسال بشكل عادي
Send EMail WithOut Html vb2008.rar
تم بحمد الله
أرجوا أن أكون وفقت في طريقة الشرح
تحياتي لكم ,, ودمتم بخير
دعواتكم الصالحة
[/b][/b][/b][/b][/b]
