همان طوری که قبلاً بحث شده بود در رابطه با ارسال ایمیل . در این مقاله قسمت دوم آن را پی میگیریم .
در این قسمت به چگونگی ارسال ایمیل با 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 شروع میشود ،قطعا جهت استفاده از ایمیل سرور باید نام کاربری و کلمه عبور داشته باشیم