دانلود - آموزش - سورس کد - کنکور - برنامه

دانلود - آموزش - سورس کد - کنکور - برنامه

دانلود - آموزش - سورس کد - کنکور - برنامه

دانلود - آموزش - سورس کد - کنکور - برنامه

ارسال ایمیل در asp.net

مقدمه:

فضای نام System.Net.Mail

System.Net.Mail یک فضای نام که برای ارسال ایمیل در دات نت 2 استفاده میشود.بر خلاف system.web.mail که در دات نت 1 معرفی شده، System.Net.Mail بر پایه کتابخانه های CDO/CDOSYS ساخته نشده است.در عوض زمینه ساخت آن بر اساس عدم استفاده از Com Introp بوده،یعنی بر اساس هیچ نوع کتابخانه ی Com ساخته نشده است

System.Net.Mail یک کلاس کاملا جدید برای ساخت و ارسال ایمیل معرفی کرده است
گرچه بعضی از ویژگیهای system.web.mail حذف شده، اما فضای نام System.Net.Mail بسیار فراگیر تر و تطبیق پذیر تر از system.web.mail است که وابسته به کتابخانه CDO میباشد


برای ارسال ایمیل در دات نت به چه چیزی نیازمندیم؟

قبل از هر چیزی لازم است که دات نت فریم ورک را نصب کنید
سپس system.dll را به عنوان مرجع (reference) به صفحه معرفی کنید(به صورت اتوماتیک به صفحات اضافه میشود).
برای ایجاد و ارسال ایمیل از فضای نام System.Net.Mail استفاده میشود
در این مرحله شما با برنامه نویسی ،به پیکربندی برنامه خود میپردازید
شما نیازمند یک سرور واسط برای ارسال ایمیل هستید
یک سرور واسط (Relay Server) که یک سرور ایمیل(Email Server) یا یک SMTP سرور /سرویس است که ارسال ایمیل را مدیریت میکند.(Handle)
System.Net.Mail بسادگی ایمیل را برای سرور ارسال میکند و سرور ایمیل مسئول رساندن ایمیل به مقصد نهایی میباشد

سرور واسط

یک واسط یک سرویس است،که به شما اجازه میدهد ایمیل ارسال کنید
واسط به طور معمول یک سرور ایمیل (Mail Server)کامل است یا برای سرویس SMTP پیکربندی شده است
بطور مثال:

ایمیل سرور ها(Mail Server):


Microsoft Exchange
IMail by IPSwitch
Mail Enable by Mail Enable

سرویس های SMTP:

سرویس SMTP که بر روی IIS نصب میشود
(System.Net.Mail) SNM ایمیل را برای سرور واسط ارسال میکند و سرور ایمیل مسئول رساندن ایمیل به مقصد نهایی میباشد
زمانی که ایمیل برای سرور واسط ارسال میگردد،شما باید اجازه دسترسی به آن سرور را داشته باشید.دلیل این امر مسئله SPAM ها میباشد
دسترسی به سرورهای واسط به طور طبیعی یا از طریق IP Address یا username/password امکان پذیر میباشد

سرویس SMTP در IIS

سرویس IIS SMTP یک سرویس برای ارسال ایمیل میباشد
این سرویس تمام سرویس های زیر را مدیریت میکند


MX Record (Mail server location) lookups
SMTP connections to remote mail servers
Retries
Failures



اطلاعات بیشتر را میتوانید از سایت مایکروسافت بخواهید
http://www.microsoft.com/mind/1299/smtp2000/smtp2000.asp

آیا با استفاده از System.Net.Mail میتوانیم ایمیل هایمان را بخوانیم؟

جواب نه میباشد.با استفاده از SNM فقط میتوانید ایمیل ارسال کنید
برای خواندن ایمیل میتوانید از Mime parsing component یا POP3 component استفاده کنید


نگاهی به کلاس های فضای نام System.Net.Mail:


MailMessage Class
MailAddress Class
Attachment Class
SmtpClient Class
AlternateView Class
Linked Resource


کلیه کلاس های فوق به طور کامل شرح داده خواهند شد

کلاس MailMessage:

کلاس MailMessage ساخت و مدیریت پیغام ایمیل را تامین میکند
سایر کلاسها به نوعی با این کلاس در ارتباط هستند
برخی از ویژگی های(Properties) کلاس MailMessage به شرح زیر میباشند


توضیحات تکمیلی در
http://msdn2.microsoft.com/en-us/library/system.net.mail.mailmessage.aspx

[C#]

        MailMessage mail = new MailMessage();
        mail.From = new MailAddress("me@mycompany.com");
        mail.To.Add("you@yourcompany.com");
        mail.Subject = "This is an email";
        mail.Body = "this is the body content of the email.";

[VB]

        Dim mail As New MailMessage()
        mail.From = New MailAddress("me@mycompany.com")
        mail.To.Add("you@yourcompany.com")
        mail.Subject = "This is an email"
        mail.Body = "this is the body content of the email."
این نکته در کد بالا قابل توجه است که:
به این نوع ایمیل که بدنه(Body) آن شامل متن ساده است در اصطلاح Plain Text گفته میشود
اما بدنه (Body) میتواند شامل تگ های HTML نیز باشد
جهت استفاده از این امکان باید خاصیت IsBodyHtml را برابر True کنیم
به مثال زیر توجه کنید:
[C#]

MailMessage mail = new MailMessage();

mail.From = new MailAddress("me@mycompany.com");
mail.To.Add("you@yourcompany.com");

mail.Subject = "This is an email";
mail.Body = "this is a sample body with html in it. This is
bold
This is blue";
mail.IsBodyHtml = true;

SmtpClient smtp = new SmtpClient("127.0.0.1");
smtp.Send(mail);

[VB]

Dim mail As New MailMessage()

mail.From = New MailAddress("me@mycompany.com")
mail.To.Add("you@yourcompany.com")

mail.Subject = "This is an email"
mail.Body = "this is a sample body with html in it. This is
bold
This is blue"
mail.IsBodyHtml = True

Dim smtp As New SmtpClient("127.0.0.1")
smtp.Send(mail) 
 
همان طوری که قبلاً بحث شده بود در رابطه با ارسال ایمیل . در این مقاله قسمت دوم آن را پی میگیریم .
در این قسمت به چگونگی ارسال ایمیل با CC و Bcc و ... آشنا خواهید شد و همچنین با Attach کردن فایل به ایمیل به طور کامل آشنا خواهید شد .
کلاس MailAddress:

از این کلاس برای ساختن آدرس ایمیل استفاده میشود
از این کلاس میتوان در ویژگی های(Properties) :

MailMessage.From
MailMessage.To
MailMessage.CC
MailMessage.BCC

استفاده کرد
از بین این ویژگی ها ،ویژگی .From یک ایمیل حقیقی است(یعنی یک ایمیل را به عنوان فرستنده میتوان معرفی کرد)
اما سایر ویژگی ها، کلکسیونی از ایمیل ها را دریافت میکنند
برخی از ویژگی های(Properties) کلاس MailAddress به شرح زیر میباشند


توضیحات تکمیلی در
http://msdn2.microsoft.com/en-us/library/system.net.mail.mailaddress.aspx

مثالی از نحوه استفاده از این کلاس:
[C#]

MailMessage mail = new MailMessage();

mail.From = new MailAddress("me@mycompany.com", "Steve James");

mail.To.Add("you@yourcompany.com");
mail.To.Add("you2@yourcompany.com");

mail.CC.Add("cc1@yourcompany.com");
mail.CC.Add("cc2@yourcompany.com");

mail.Bcc.Add("blindcc1@yourcompany.com");
mail.Bcc.Add("blindcc2@yourcompany.com");

mail.Subject = "This is an email";
mail.Body = "this is the body content of the email.";

[VB]

Dim mail As New MailMessage()

mail.From = New MailAddress("me@mycompany.com", "Steve James")

mail.To.Add("you@yourcompany.com")
mail.To.Add("you2@yourcompany.com")

mail.CC.Add("cc1@yourcompany.com")
mail.CC.Add("cc2@yourcompany.com")

mail.Bcc.Add("blindcc1@yourcompany.com")
mail.Bcc.Add("blindcc2@yourcompany.com")

mail.Subject = "This is an email"
mail.Body = "this is the body content of the email."
این نکات در کد بالا قابل توجه است که:

1. اگر بخواهیم گیرنده ایمیل وقتی ایمیل را دریافت میکند به جای آدرس ایمیل، نام تعیین شده توسط ما برای آن نمایش داده شود به صورت زیر عمل میکنیم

 
mail.From = new MailAddress("me@mycompany.com", "Steve James")
 
2. اگر بخواهیم نام فرستنده به صورت فارسی یا هر زبان دیگر نمایش داده شود به صورت زیر عمل میکنیم
 
mail.From = new MailAddress("me@mycompany.com", "فارسی",System.Text.Encoding.GetEncoding("windows-1256"))
 
. از روش ذکر شده بالا میتوانید برای ویژگیهای To,Bcc,CC نیز استفاده کنید

4. چون ویژگیهای To,Bcc,CC میتوانند کلکسیونی از ایمیل ها را دریافت کنند میتوانید با فراخوانی مکرر تابع ADD ایمیل های فراوانی را به آنها اضافه کنید


آیا میدانید تفاوت Toو BCC و CC در چیست؟

To به معنای گیرنده اصلی ایمیل میباشد
CC مخفف Carbon Copy میباشد و زمانی از آن استفاده میشود که بخواهیم یک کپی از ایمیل را برای شخص دیگری بفرستیم
Bcc مخفف Blind Carbon Copy میباشد.و زمانی از آن استفاده میشود که بخواهیم یک کپی از ایمیل را برای شخصی بفرستیم،به صورتی که CC و To متوجه ارسال ایمیل برای شخص سوم نشوند
اما BCC متوجه ارسال ایمیل به To و BCC خواهد شد

کلاس Attachment:

از این کلاس جهت ساخت و مدیریت ضمائم متعلق به یک شی MailMessage استفاده میشود
ضمیمه میتواند آدرس یک فایل یا یک Stream باشد.این قابلیت باعث میشود ما بتوانیم هر نوع داده ای را به ایمیل خود ضمیمه کنیم
توضیحات تکمیلی در
http://msdn2.microsoft.com/en-us/library/system.net.mail.attachment.aspx

مثالی از نحوه استفاده از این کلاس:
[C#]

mail.From = new MailAddress("me@mycompany.com");
mail.To.Add("you@yourcompany.com");
mail.Subject = "This is an email";
mail.Body = "this content is in the body";
mail.Attachments.Add(new Attachment("c:\\temp\\example.txt"));
mail.Attachments.Add(new Attachment("c:\\temp\\example2.txt"));
mail.Attachments.Add(new Attachment("c:\\temp\\example3.txt"));

[VB]

Dim mail As New MailMessage()
mail.From = New MailAddress("me@mycompany.com")
mail.To.Add("you@yourcompany.com")
mail.Subject = "This is an email"
mail.Body = "this content is in the body"
mail.Attachments.Add(New Attachment("c:\temp\example.txt"))
mail.Attachments.Add(New Attachment("c:\temp\example2.txt"))
mail.Attachments.Add(New Attachment("c:\temp\example3.txt"))
مثالی از نحوه استفاده از این کلاس در استفاده از Stream:
[C#]

MailMessage mail = new MailMessage();

mail.From = new MailAddress("me@mycompany.com");
mail.To.Add("you@yourcompany.com");

mail.Subject = "This is an email";
mail.Body = "this content is in the body";

string s = "this is some text";
byte[] data = System.Text.Encoding.ASCII.GetBytes(s);


System.IO.MemoryStream ms = new System.IO.MemoryStream(data);

mail.Attachments.Add(new Attachment(ms, "example.txt","text/plain"));

SmtpClient smtp = new SmtpClient("127.0.0.1");
smtp.Send(mail);

[VB]

Dim mail As New MailMessage()

mail.From = New MailAddress("me@mycompany.com")
mail.To.Add("you@yourcompany.com")

mail.Subject = "This is an email"
mail.Body = "this content is in the body"

Dim s As String = "this is some text"
Dim data As Byte() = Encoding.ASCII.GetBytes(s)

Dim ms As New IO.MemoryStream(data)

mail.Attachments.Add(New Attachment(ms, "example.txt", "text/plain"))

Dim smtp As New SmtpClient("127.0.0.1")
smtp.Send(mail)

 
کلاس SmtpClient:
کلاس SmtpClient مسئولیت ارسال یا نقل و انتقال ایمیل را بر عهده دارد
کلاس SmtpClient توانایی حمل محتویات ایمیل بر روی شبکه دارد،یا میتواند ایمیل را به صورت یک فایل سیستم در سرویس SMTP IIS در داخل پوشه
Pickup Directory به شبیه به فرمت ذکر شده در RFC822 ذخیره کند
(جهت مشاهد RFC میتوانی به سایت rfc-editor.org مراجعه کنید)
کلاس SmtpClient میتواند ایمیل را هم به صورت هم زمان(Synchronously) و هم به صورت غیر هم زمان(Asynchronously) ارسال کند
کلاس SmtpClient ارسال ایمیل به صورت SSL را هم جهت اهداف امنیتی پشتیبانی میکند

برخی از ویژگی های(Properties) کلاس SmtpClient به شرح زیر میباشند


توضیحات تکمیلی در
http://msdn2.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx
[C#]

using System.Net;

MailMessage mail = new MailMessage();
mail.From = new MailAddress("me@mycompany.com");
mail.To.Add("you@yourcompany.com");
mail.Subject = "This is an email";
mail.Body = "this is the body content of the email.";
SmtpClient smtp = new SmtpClient("127.0.0.1");

smtp.Credentials = new NetworkCredential("username", "secret");

smtp.Send(mail);

[VB]

Dim mail As New MailMessage()
mail.From = New MailAddress("me@mycompany.com")
mail.To.Add("you@yourcompany.com")
mail.Subject = "This is an email"
mail.Body = "this is the body content of the email."
Dim smtp As New SmtpClient("127.0.0.1")

smtp.Credentials = New Net.NetworkCredential ("username", "secret")

smtp.Send(mail)
این نکات در کد بالا قابل توجه است که:

1. زمانی که شما جهت استفاده از سرور واسط (ایمیل سرور) مجبور به تعیین هویت هستید و با ارائه نام کاربری و کلمه عبور امکان استفاده از سرویس سرور واسط محیا خواهد شد،ناچار به ارسال نام کاربری و کلمه عبور برای سرور واسط هستید.این امر با استفاده از دستود زیر امکان پذیر خواهد شد
smtp.Credentials = new NetworkCredential("username", "secret")
NetworkCredential در فضای نام System.Net قرار دارد و جهت استفاده از آن باید با این فضای نام به عنوان یکی از مراجع انتخاب شود

2. حال سوالی که در اینجا در ذهن شما ایجاد میشود این است که این نام کاربری و کلمه عبور را از کجا بدست آوریم؟

جواب این سوال بسیار ساده است،و اجازه دهید پرسشی دیگر جهت آشکار شدن موضوع بیان کنیم،و آن پرسش این است، که شما جهت استفاده از سرویس ایمیل Yahoo چطور عمل میکنید؟
اگر دقت کرده باشید به طور معمول Yahoo هم جهت استفاده از سرویس ایمیل خود، به شما اجازه نخواهد داد به عنوان یک ناشناس ایمیل ارسال و یا دریافت کنید حتما باید دارای ایمیلی از این ایمیل سرور باشید

توجه:امکان ارسال ایمیل به صورت ناشناس و با ایمیل جعلی توسط سرور Yahoo و دیگر سرور های مجانی و جود دارد که خارج از بحث ما میباشد

و با ارائه نام کاربری (ایمیل) و کلمه عبور امکان بهره برداری از سرویس های این ایمیل سرور مقدور خواهد شد

پس ما برای ارائه کلمه عبور به ایمیل سرور باید دارای یک ایمیل از آن ایمیل سرور باشیم
ایجاد ایمیل بر روی هاست، از طریق ورود به قسمت کنترل (Control Panel) سایت و ورود به قسمت مدیریت ایمیل ها امکان پذیر است

توجه: به هیچ عنوان از ایمیلی که اطلاعات داخل آن برای سایت حائز اهمیت میباشد جهت ارسال ایمیل استفاده نکنید
ایمیل هایی همچون Info و Support و...

توجه:هنگام استفاده از دستور زیر باید به جای username ، ایمیل را به صورت کامل و به جای Mypassword ، کلمه عبور ایمیل را وارد کنید.
smtp.Credentials = new NetworkCredential("Send@Yoursite.com","Mypassword")
. نکته ای دیگر این که نام یا Ip Address سرور واسط (ایمیل سرور) سرویس دهنده خود را از کجا به دست بیاوریم؟

در جواب این سوال باید گفت،عموما سرویس دهنده های هاست در ایمیل ارسالی برای شما که در آن اطلاعات هاست شما قرار دارد اطلاعات این سرور را ارسال میکنند اما تماس با واحد پشتیبانی سرویس دهنده هاست بهترین گزینه است

حال اگر نخواستید از گزینه بالا استفاده کنید از روش زیر استفاده کنید

با داشتن یک فایروال مناسب و آنتی ویروس بروز وارد سایت زیر شود
http://www.mob.net/~ted/tools/mx.php3
و در محل مشخص شده نام هاست خود را به طور کامل تایپ کنید
اندکی تامل کنید تا پاسخ شما که نام سرور ایمیل هاست شما میباشد برای شما لیست گردد
با دستور Telnet به صورت زیر میتوانید به ایمیل سرور خود متصل شوید
در منوی Start گزینه Run را انتخاب کنید
و در Run دستور CMD را تایپ کنید تا پنجره Command Prompt بازشود
سپس دستور زیر را وارد کنید
telnet mail.YourSite.Com 25
بعد از دستور Telnet آدرسی را که به عنوان ایمیل سرور از طریق مرحله قبل به دست آوردیم را وارد میکنیم

عدد 25 به مفهوم پورتی است که میخواهیم از طریق آن به سرور ایمیل متصل شویم
توجه کنید که بین هر قسمت فاصله (Space) وجود دارد
پس از این دستور با پیغامی شبیه پیغام زیر مواجه میشوید


متوجه خواهید شد که در اکثرموارد بعد از عدد 220 نام ایمیل سرور دیگری نمایش داده میشود.بهتر است از این ایمیل سرور معرفی شده در این قسمت استفاده کنید
پس از توضیحات متوجه میشوید که جهت ارسال ایمیل باید خط زیر را به این صورت تنظیم کنید(با توجه به مثال بالا و به دست آوردن ایمیل سرور از نام بدست آمده استفاده میکنیم)

SmtpClient smtp = new SmtpClient("mailserver1.parsdata.com");
                           یــا
Dim smtp As New SmtpClient("mailserver1.parsdata.com")
4. نکته ای دیگر این که از کجا بفهمیم که برای استفاده از امکانات یک سرور واسط،حتما باید به آن نام کاربری و کلمه عبور بدهیم؟

برای فهمیدن این موضوع به صورت زیر عمل میکنیم
بعد از استفاده از دستور telnet به همان شکل توضیح داده شده،در اولین خط دستور ،این دستور را وارد کنید.
Auth login
اگر بعد از دستور فوق جوابی شبیه پیغام زیر را بگیرید که با عدد 334 شروع میشود ،قطعا جهت استفاده از ایمیل سرور باید نام کاربری و کلمه عبور داشته باشیم
  
نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد