HOW 2 LEARN ASP.NET
نویسنده : delshad
تاریخ  : ۱۳۸۸/۶/۲
امتیاز :
بازدید : 4475
موضوع : ایجاد فرم ارسال به ایمیل در Asp.NET
توضیحات : در این مقاله قصد دارم نحوه ارسال محتویات یک فرم به ایمیل را به سه روش کاملا متفاوت توضیح دهم . در نهایت یک کتابخانه بسیار مفید نیز برای ارسال فرم به ایمیل نیز ارائه خواهم داد.
     

ایجاد فرم ارسال به ایمیل در Asp.NET

 

ارسال ایمیل یکی از رایج ترین و پرکاربردترین اعمال وب می باشد ، بنده در مقاله ارسال ایمیل به صورت کامل توضیح دادم که به چه صورت شما می توانید از طریق Asp.NET ایمیل ارسال کنید .

در این مقاله قصد دارم نحوه ارسال محتویات یک فرم به ایمیل را به سه روش کاملا متفاوت توضیح دهم .

در نهایت یک کتابخانه بسیار مفید نیز برای ارسال فرم به ایمیل نیز ارائه خواهم داد.

 

فرض می کنیم فرمی شامل فیلد های زیر داریم :

نام

نام خانوادگی

ایمیل

جنسیت

متن پیام

پس از پر شدن اطلاعات توسط کاربر با فشردن دکمه "تایید" اطلاعات برای شما به صورت ایمیل ارسال خواهد شد .

 

ابتدا فضا نام های مورد نیاز را اضافه نمایید :

using System.Text;
using System.Net;
using System.Net.Mail;
using System.IO;

سپس یک تابع برای ارسال ایمیل به صورت زیر می نویسیم :

    public void SendMail(string Subject, string To, string Body)
    {
        SmtpClient MyMail = new SmtpClient();
        MailMessage MyMsg = new MailMessage();

        MyMail.Host = "mail.yoursite.com";

        MyMsg.To.Add(new MailAddress(To));
        MyMsg.Subject = Subject;
        MyMsg.SubjectEncoding = Encoding.UTF8;

        MyMsg.IsBodyHtml = true;
        MyMsg.From = new MailAddress("yourmail@yoursite.com", "yourname");
        MyMsg.BodyEncoding = Encoding.UTF8;
        MyMsg.Body = Body;

        MyMail.UseDefaultCredentials = false;
        NetworkCredential MyCredentials = new NetworkCredential("yourmail@yoursite.com", "yourpassword");
        MyMail.Credentials = MyCredentials;

        MyMail.Send(MyMsg);

    }

تابع فوق با گرفتن 3 ورودی Subject برای موضوع ایمیل ، To آدرس ایمیل مقصد و Body متن مورد نظر ، ایمیل مورد نظر شما را ارسال می کند.

حال به سراغ روش های ارسال فرم می رویم :

 

روش اول :

این روش ساده ترین روش بوده ، کمترین زمان را از برنامه نویس میگیرد اما فرم های ارسال شده به ایمیل خیلی مرتب و دلچسب نخواهد بود .

برای اینکار به صورت زیر عمل می کنیم :

    protected void Button1_Click(object sender, EventArgs e)
    {
        string Body = "Name:{0} Family:{1} Email:{2} Gender:{3} Message:{4}";
        Body = string.Format(Body, txtName.Text, txtFamily.Text, txtEmail.Text, ddlGender.SelectedValue, txtMessage.Text);

        SendMail("New Form", "YourEmail", Body);
       
    }

همانطور که ملاحظه می کنید این روش بسیار ساده است ، ابتدا یک رشته شامل اطلاعات فرم ایجاد کردیم و سپس از String.Format برای جایگزین کردن پارامترها استفاده نمودیم

البته شما میتوانید برای مرتب تر شده از تگ های HTML مانند تگ BR داخل رشته

 

روش دوم :

در این روش ما یک فایل HTML ایجاد می کنیم ، فرم مورد نظرمان را در آن ایجاد می نماییم سپس جای مقادیر را با نام مورد نظر به همراه یک علامت خاص پر می کنیم ، فایل Html ما (mail.htm) به صورت زیر خواهد بود :

<html>
<head>
</head>
<body style="direction: rtl">
    <form id="form1" runat="server">
        <table border="0">
            <tr>
                <td>
                    نام :</td>
                <td>
                    #name#</td>
            </tr>
            <tr>
                <td>
                    نام خانوادگی :</td>
                <td>
                    #family#</td>
            </tr>
            <tr>
                <td>
                    ایمیل :</td>
                <td>
                    #email#</td>
            </tr>
            <tr>
                <td>
                    جنسیت :</td>
                <td>
                    #gender#</td>
            </tr>
            <tr>
                <td>
                    پیام :</td>
                <td>
                    #message#</td>
            </tr>
        </table>
    </form>
</body>
</html>

همانطور که ملاحظه می کنید ما یک فرم شبیه فرم اصلی ساخته ایم و به جای Textbox ها از ## استفاده کردیم ، روش کار به این صورت است که در هنگام ارسال ایمیل ما ابتدا اطلاعات داخل فایل Html را توسط StreamReader خوانده ، مقادیر داخل ## را با مقدار اصلی داخل فرم جایگزین کرده و سپس متن به دست آمده را ارسال می کنیم :

    protected void Button2_Click(object sender, EventArgs e)
    {
        StreamReader sr = new StreamReader(Server.MapPath("mail.htm"));
        string Body = sr.ReadToEnd();
        sr.Close();

        Body = Body.Replace("#name#", txtName.Text);
        Body = Body.Replace("#family#", txtFamily.Text);
        Body = Body.Replace("#family#", txtFamily.Text);
        Body = Body.Replace("#email#", txtEmail.Text);
        Body = Body.Replace("#gender#", ddlGender.SelectedValue);
        Body = Body.Replace("#message#", txtMessage.Text);

        SendMail("New Form", "YourEmail", Body);
    }

روش فوق یکی از پرکاربرد ترین روش های ارسال فرم می باشد چرا که در این روش شما قادر هستید فرم ارسالی را به هر شکلی که می خواهید تزئین نموده و جای هر کدام از فیلد ها را به صورت دلخواه در فرم قرار دهید .

 

روش سوم :

در این روش شما می توانید از کتابخانه ای که بنده برای اینکار نوشتم استفاده کنید ، کار با این کتابخانه بسیار ساده می باشد ، کافیست ابتدا این کتابخانه را از اینجا دانلود نموده و پس از خارج کردن از حالت فشرده آن را به شاخه Bin در پروژه خود اضافه کنید .

ابتدا لازم است  که بر روی Table که فرم شما در آن قرار دارد کلیک راست کرده و گزینه Run As Server Control را انتخاب کنید سپس یک Id به این Table بدهید ، این کار برای این است که بتوانیم اطلاعات داخل این جدول را در سمت سرور مشاهده نماییم .

سپس خیلی ساده از کتابخانه نام برده به صورت زیر استفاده کنید :

    protected void Button3_Click(object sender, EventArgs e)
    {
        string Body = Delshad.HtmlUtility.GetHTML(tblForm);
        SendMail("New Form", "YourEmail", Body);
    }

کتابخانه نام برده با دادن آی دی جدول اطلاعات داخل فرم را واکشی می نماید .

 

امیدوارم این مقاله برای شما مفید واقع شده باشد .

شما می توانید فایل پروژه را از اینجا دانلود نمایید .

 


 

 

 
امتیاز بدهید :

نویسنده : سروش madira304@yahoo.com ۱۳۸۹ بيست و ششم مرداد
سلام ممنون از کد شما. ولی من یک مشکل دارم.اونم اینکه وقتی بصورت local و در حال اتصال به اینترنت ایمیل میقرستم مشکلی نداره .ولی از وقتی که سایت رو آپلود کردم امکان ارسال ایمیل وجود نداره و ایمیل فرستاده نمیشه. ممنون میشم راهنمایی کنید.
نویسنده : نسرین nasrin65_15@yahoo.com ۱۳۸۹ هفدهم مرداد
مرسی خیلی عالیه
نویسنده : ali max_ali007@yahoo.com ۱۳۸۹ سيزدهم خرداد
خیلی عالی بود................
نویسنده : Ali a.asplover@gmail.com ۱۳۸۹ اول خرداد
عزیز جان دستت درد نکنه اما این به چه زبونیه؟ C#?? من این رو اضافه میکنم به پروژه از اول تا آخرش زیرش خط آبی میکشه من VB.net باز کردم لطفاً کدها رو که مینویسی بگو کجای صفحه باید paste بشه واسه ما که تازه تازه شروع کردیم این مسائل مشکل ساز میشه ممنون میشم فایل کدها رو بصورت نمونه بذاری که ببینیم به چه ترتیبی باید نوشته بشه و زبان برنامه رو هم حتماً بنویس چون من هنوز فرق خیار و سیب زمینی رو نمیفهمم چه برسه به C# و VB.net مرسی
نویسنده : ساناز khodaei_p@yahoo.com ۱۳۸۹ هجدهم فروردين
خيلي ممنون از لطفتون من پروژه را اجرا كردم ولي در خط MyMail.Send(MyMsg); خطا ميدهد.نميدونم به جاي مقدار mail.yoursite.com چه بنويسم يا به جايyourmail@yoursite.comچون سايت كه ندارم بنويسم .ميشه راهنمايي كنيد.....
نویسنده : علی دلشاد delshad@4-wg.com ۱۳۸۸ پنجم اسفند
دوست عزیز MyMsg یک شی از کلاس MailMessage است نیازی نیست به جای آن چیزی بنویسید در ضمن سوالات خود را در بخش پرسش و پاسخ مطرح کنید با تشکر
نویسنده : ایمان hassan.jiryaei@gmail.com ۱۳۸۸ پنجم اسفند
با تشکر از شما من این کد را امتحان کردم ولی در قیمت تابع برای ارسال ایمیل خط آخر دستور MyMail.Send(MyMsg); به جای MyMsg چه عبارتی باید نوشته شود.چون در هنگام اجرای برنامه در این قسمت به مشکل بر می خورم.
نویسنده : محمد کریمی mohammadchoharzaban@gmail.com ۱۳۸۸ يازدهم بهمن
مرسی ولی در روش دوم کد دکمه ارسال را قرار ندادی کاملش کن
نویسنده : shima m.shima.m@gmail.com ۱۳۸۸ هفتم بهمن
میشه راهنمایی کنید قسمتMyMsg.From = new MailAddressوNetworkCredential MyCredentials = new NetworkCredentialجی باید وارد کنیم.
نویسنده : يعيد www.vb_net2000@yahoo.com ۱۳۸۸ بيست و نهم آذر
linq بيشتر ميخوام
نویسنده : parisa parisa.m780@gmail.com ۱۳۸۸ بيست و دوم آذر
خيلي خوب و مفيد بود، ممنون
نویسنده : محمد رحمانی mamadrahmani@yahoo.com ۱۳۸۸ بيست و يکم آذر
سلام، بسیار عالی بود، کارتان جای تشکر بسیار دارد.
نویسنده : صفت اله ابراهیمی tabiatchaloos@yahoo.com ۱۳۸۸ سي و يکم شهريور
با سلام وخسته نباشید خدمت شما :جناب آقای دلشاد کارتان برای آموزش ودر اختیار گذاردن اطلاعات برای عموم جای تقدیر وتشکر فراوان دارد . بنده به نوبه خود با خواندن مطالب وراهنمایی های مفید از شما کمال تشکر رادارم .
نویسنده : زهرا aryangirl_1986@yahoo.com ۱۳۸۸ دوم شهريور
بسیار مفید بود ممنون

 
نظر بدهید :
لطفا سوالات فنی خود را در تالار گفتگو www.forum.how2learnasp.net مطرح نمایید
نام :  
ایمیل :    
نظرات :
 
Xml rss feed

 

Valid CSS! Atom rss feed
Ali Delshad Official Site