ارسال ایمیل در 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) به صورت زیر خواهد بود :

<table border="0">
<tbody><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>
</tbody></table>

همانطور که ملاحظه می کنید ما یک فرم شبیه فرم اصلی ساخته ایم و به جای 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);
}

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

سورس برنامه و کتابخانه استفاده شده در فایل پیوست ضمیمه شده است

مرتضی جنگجو

برنامه نویس fullstack با بیش از 14 سال سابقه کار و همکاری در توسعه و پیاده سازی نرم افزارهای تحت وب با تکنولوژی Net. در شرکتهای بزرگ ایرانی، هلندی، فنلاندی و ترکیه

شبکه های اجتماعی نویسنده

دیدگاه کاربران