• السابق التالي







  • اغسطس
    30
    إرسال بريد إلكتروني عن طريق تقنية ASP.Net
    2010
    كتـب بـواسطة : مهند بندق , التصنيف : دروس في البرمجة , عدد المشاهدات (3644)

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

    كثير منا يتسائل عن كيفية إرسال بريد الكتروني عن طريق موقعك أو عن طريق برنامجك بشكل آلي  إلى بريد معين .. مثلا عند تسجيله في موقعك كرسالة التفعيل أو رسالة شكر آلية بعد التعليق على موضوع معين في مدونتك كما يحصل في هذه المدونة.. صحيح أن الأمر معروف لدى أغلب محترفي البرمجة على تقنية  ASP.Net ولغتي VB.Net و C#.Net.. ولكن المستهدف في هذا الموضوع هو المبتدئين منا ..عسى أن يكون فيه فائدة تساهم في انشاء مشاريع أكثر احترافية..

    لنبدأ على بركة الله

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

    المعلومات المطلوبة هي عنوان البريد, كلمة مرور البريد, وعنوان خادم البريد الصادر.

    لتكن على سبيل المثال

    myemail@mywebsite.com

    كلمة المرور : 123456.

    عنوان الخادم : smtp.mywebsite.com

    الآن عليك انشاء مشروع Asp.Net عن طريق Visual studio وادراج معلومات البريد الذي سنستعمله للإرسال داخل ملف web.config.

     <system.net>

    <mailSettings>

    <smtp deliveryMethod="Network">

    <network host="smtp.mywebsite.com" userName="myemail@mywebsite.com" password="123456"/>

    </smtp>

    </mailSettings>

    </system.net>

     

    ثم على صفحات Asp.net و بلغة C# نقوم باستعمال عدة كائنات لإتمام ارسال البريد بعد استدعاء مجال اسماء

    System.Net.Mail

    ثم نقوم بتعريف كائن من نوع MailMessage الذي سنعطي له البريد المستخدم في الارسال و البريد الذي نود الارسال اليه أثناء التعريف به هكذا :

    MailMessage MyEmailMsg =

    new MailMessage("myemail@mywebsite.com", EmailTo);

     

    حيث EmailTo متغير من نوع String الذي يمثل عنوان البريد أو لمزيد من التوضيح يمكن كتابته هكذا :

    MailMessage MyEmailMsg =

    new MailMessage("myemail@mywebsite.com", "ToEmail@website.com");

     

    يمكننا أيضا تحديد نوع دعم الاحرف لنتمكن من دعم العربية وأغلب اللغات في محتوى وعنوان الرسالة عن طريق الخاصية SubjectEncoding و التي سنسند لها الخيار System.Text.Encoding.UTF8 كما يلي :

    MyEmailMsg.SubjectEncoding = System.Text.Encoding.UTF8;

     

    وأيضا اسناد عنوان الرسالة

    MyEmailMsg.Subject = "Subject";

     

    ومحتوى الرسالة

    MyEmailMsg.Body = "EmailBody";

     

    لو كان محتوى الرسالة يحتوي على وسوم HTML ترغب في عرضها كما تعرض في متصفح الانترنت يجب عليك اسناد القيمة true للخاصية IsBodyHtml , أو false لتعطيل هذه الخاصية.

    MyEmailMsg.IsBodyHtml = true;

     

    إن كنت تود ارسال ملفات مرفقة مع رسالتك يجب عليك استعمال كائن آخر من نوع Attachment والذي يستقبل عند تعريفه عدة باراميترز مثلا مسار الملف فقط

    Attachment AttFile = new Attachment("FileName");

     

    أو الافضل اسناد كائن من نوع  Stream  ليقوم بدوره بالتعامل مع الملف كما يلي:

    Stream Str = File.Open("fileName", FileMode.Open);

    Attachment AttFile = new Attachment(Str,"File Name");

     

    للمزيد من المعلومات حول التعامل مع الملفات و الكائن Stream راجع هذا الموضوع

    http://www.mohaned-b.com/WebSite/Blog.aspx?BlogID=e524fb39-42c6-4c52-80bc-2f1ef725c37b

    بعد تكوين كائن من نوع Attachment عليك اضافته إلى كائن الرسالة الخاص بنا على هذا النحو :

    MyEmailMsg.Attachments.Add(AttFile);

     

    هكذا صارت رسالتنا جاهزة معدة تماما للإرسال..

     لنقوم بعملية الارسال سنستعين بكائن من نوع SmtpClient والذي به طريقة تسمى Send تستقبل باراميتر من نوع MailMessage أي كائن الرسالة لتتم عملية الارسال يعني الكود سيكون هكذا ..

    SmtpClient MySmtpClient = new SmtpClient();

    MySmtpClient.Send(MyEmailMsg);

     

    وهذا اجراء جاهز لإرسال البريد الإلكتروني عن طريق مشروعك واستدعائه بشكل متكرر .

    C#.Net

    public void SendEmail(string EmailTo, string EmailSubject, string EmailBody)

    {

    MailMessage MyEmailMsg =

    new MailMessage("myemail@mywebsite.com", EmailTo);

    MyEmailMsg.SubjectEncoding = System.Text.Encoding.UTF8;

    MyEmailMsg.Subject = EmailSubject;

    MyEmailMsg.IsBodyHtml = true;

    MyEmailMsg.Body = EmailBody;

    SmtpClient SmtpClient = new SmtpClient();

    SmtpClient.Send(MyEmailMsg);

    }

     

    أو VB.Net

    Public Sub SendEmail(ByVal EmailTo As String, ByVal EmailSubject As String, ByVal EmailBody As String)

    Dim MyEmailMsg As New MailMessage("myemail@mywebsite.com", EmailTo)

    MyEmailMsg.SubjectEncoding = System.Text.Encoding.UTF8

    MyEmailMsg.Subject = EmailSubject

    MyEmailMsg.IsBodyHtml = True

    MyEmailMsg.Body = EmailBody

    Dim SmtpClient As New SmtpClient()

    SmtpClient.Send(MyEmailMsg)

    End Sub

     

    وليكون اجرائنا يشمل الملفات المرفقة أيضا نستطيع اضافة باراميتر يمثل مصفوفة من الملفات المرفقة .. هكذا :

    C#.Net

    public void SendEmail(string EmailTo, string EmailSubject,

    string EmailBody,Attachment [] MyFiles)

    {

    MailMessage MyEmailMsg =

    new MailMessage("myemail@mywebsite.com", EmailTo);

    MyEmailMsg.SubjectEncoding = System.Text.Encoding.UTF8;

    MyEmailMsg.Subject = EmailSubject;

    MyEmailMsg.IsBodyHtml = true;

    MyEmailMsg.Body = EmailBody;

    if (MyFiles != null && MyFiles.Count()!=0)

    {

    foreach (Attachment ThisFile in MyFiles)

    {

    MyEmailMsg.Attachments.Add(ThisFile);

    }

    }

    SmtpClient SmtpClient = new SmtpClient();

    SmtpClient.Send(MyEmailMsg);

    }

     

    VB.Net

    Public Sub SendEmail(ByVal EmailTo As String, ByVal EmailSubject As String,

    ByVal EmailBody As String, ByVal MyFiles As Attachment())

    Dim MyEmailMsg As New MailMessage("myemail@mywebsite.com", EmailTo)

    MyEmailMsg.SubjectEncoding = System.Text.Encoding.UTF8

    MyEmailMsg.Subject = EmailSubject

    MyEmailMsg.IsBodyHtml = True

    MyEmailMsg.Body = EmailBody

    If MyFiles IsNot Nothing AndAlso MyFiles.Length <> 0 Then

    For Each ThisFile As Attachment In MyFiles

    MyEmailMsg.Attachments.Add(ThisFile)

    Next

    End If

    Dim SmtpClient As New SmtpClient()

    SmtpClient.Send(MyEmailMsg)

    End Sub

     

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

    تقبلوا مني أطيب التحيات ..

    مهند بندق..

     
    التعليقات (5)
    بواسطة أحمد الهاميسي من ليبيا 30 اغسطس 2010

    ماشاء الله إبداعات متواصلة من جماعة MCPD تبسيط إلى آخر الحدود


    بواسطة مهند بندق من ليبيا 30 اغسطس 2010

    السلام عليكم

    شكرا أخي أحمد على الردود المشجعة لا تحرمنا من تواصلك ..




    بواسطة ابتسام من السعودية 16 ابريل 2011

    شكرا لك اخي ..الشرح واضح جدا واستفدت منه بشكل كبييير


    بواسطة مصطفى من السعودية 14 يناير 2012

    متشكر على هذا الشرح الرائع وأني استفدت من هذا الكود


    بواسطة hamad elmalil من السودان 8 فبراير 2013

    وفيت فكفيت بارك الله فيك






           
    الإسم
    الدولة
    البريد الإلكتروني
    المحتوى  
    أكتب النص الظاهر في الصورة
     





    حقوق النشر محفوظة لـ مهند بندق © 2009 - 2019
    Programmed And Designed By : Mohaned Bondoq
    Copyright © 2009 - 2019