وباکا

آموزش تخصصی برنامه نویسی وب

در این مقاله ابتدا با پروتکل های کاربردی در رابطه با پست الکترونیکی شامل smtp و pop3آشنا شده در ادامه نمونه برنامه ای به زبان سی شارپ برای ارسال نامه الکترونیکی را خواهید دید.

آشنایی با پروتکل SMTP

SMTP مهمترين پروتكل انتقال پست الكترونيكي می باشد. پروتكل smtp مخفف SIMPLE MAIL TRANSFER PROTOCOL بوده که ازاين پروتکل براي ارسال پيام‌هاي الكترونيك يE-mail استفاده می‌شود. . تا قبل از آن از پروتکل UUCP(Unix-to-Unix Copy) براي ارسال پيام‌هاي الكترونيكيE-mail استفاده می‌شد.
اين پروتكل داراي ويژگي هاي بسيار زيادي است كه آن را به يكي از مهمترين پروتكلهاي اينترنت تبديل كرده است. اما با اين وجود، اين پروتكل محدوديت هايي از قبيل محدودكردن بدنه ي نامه هاي الكترونيكي به هفت بيت كد اسكي را از زمان گذشته با خود به همراه دارد. اين محدوديت تا اوايل دهه 1980ميلادي كه انتقال و ارسال نامه هاي الكترونيكي بسيار كم و به ندرت بود، مشكلي ايجاد نمي كرد. اما امروزه و در عصر رسانه هاي چند منظوره، محدوديت هفت بيت كد اسكي دردسرساز است. زيرا نياز دارد كه داد ه هاي مالتي مدياي باينري، قبل از ارسال از طريق SMTPبه کد اسكي تبديل شوند و پس از انتقال از طريق اين پروتكل از اسكي به باينري برگردانده شوند.
پروتکل smtp به دلیل محدودیت‌هایی در نگهداری نامه‌ها، معمولا با پروتکل‌های POP3 یا (post office protocol3) یا internet message access protocol) IMAP) استفاده می‌شود که برای کاربران امکان ذخیره نامه‌ها را روی یک سرور یا دانلود آنها را از سرور فراهم می‌کند. در حقیقت می‌توان گفت، SMTP برای ارسال نامه‌ها و POP3 یا IMAP برای دریافت نامه‌ها به کار می‌روند. به عبارت ساده‌تر، سرور SMTP، مانند وب سرور یک رایانه است که مانند مسیریاب عمل می‌کند. هنگامی که پیام‌های پست الکترونیکی از کاربران را دریافت می‌کند آنها را به گیرندگان مورد نظر می‌فرستند. SMTP فقط به نام کاربری و دامنه نیاز دارد تا مستقیم پیغام را به سمت گیرنده مسیریابی کند و به طور پیشفرض بر روی پورت 25 قرار دارد.

البته مدیران سرور برای افزایش امنیت می توانند پورت آن را تغییر دهند.

آشنایی با پروتکل POP3

پروتکل pop3 که مخففPost Office Protocol 3 می باشد در اصل یك پروتكل دریافت ایمیل بر روی شبكه اینترنت است و اصولاً در لایه Application در پروتكل TCP/IP قرار می‌گیرد. اتصالات POP3 در حالت عادي رمز نشده هستند كه در اين صورت از پورت 110 استفاده خواهند کرد. در صورتي كه سرويس دهنده‌اي از SSL پشتیبانی كند، از پورت 995 برای اتصالات POP3 استفاده خواهد شد.
با استفاده از این پروتکل، هر کاربر می‌تواند به صندوق پست الکترونیکی خود بر روی سرویس‌دهنده راه دور دسترسی داشته باشد و نامه‌های الکترونیکی را دریافت و بر روی سیستم خود ذخیره کند هنگام اتصال به سرور کليه نامه های شما توسط POP به برنامه ايميل دانلود می شود در واقع پيام‌هاي پوشه‌ي Inbox از روي سرويس دهنده پاك مي‌شود و شما تنها به همان پيام‌ها دسترسي داريد.
سرویس دهنده ی pop3 به یک نام account و رمز عبور نیاز دارد پس از تایید اعتبار و مجوز سرویس دهنده ی pop3 فایل های مربوطه را فعال می کند و امکان دستیابی به آنان را فراهم می کند.

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

در پروتكل pop3 به دليل اينكه پيام‌ها بر روي فضاي هارد ديسك ذخيره مي‌شوند مشكل محدوديت فضاي جعبه پستي را نخواهيد داشت

آشنایی با پروتكل IMAP

مخفف عبارت Internet Message Access Protocol است و همانند POP3 يک پروتکل استاندارد براي دريافت ايميل از سرور است اما داراي مزايايي نسبت به پرتكلPOP3 مي‌باشد. در POP3 پس از دريافت ايميل‌ها، ايميل‌ها از روي سرور پاک مي‌شود. شما از طريق IMAP اين امکان را خواهيد داشت که بدون دانلود کردن ايميل‌هاي خود از روي سرور ، درون ايميلهاي خود جستجو کنيد ، پوشه بسازيد ، نامه‌هاي الكترونيكي را پاک کنيد و mailbox خود را براي نامه‌هاي الكترونيكي جديد چک کنيد . اين امکانات بتدريج‌ باعث جايگزينيIMAP به جاي POP3 مي شود. يکي از پر استفاده‌ترين موارد استفاده از IMAP حالت اشتراکي است مثلا در شرکتي که بايد چند نفر اجازه دسترسي به پست الکترونيک شرکت را داشته باشند IMAP راه حل مناسبي است.

نوشتن یک برنامه ارسال ایمیل

قبل از هر چیز باید فضاهای نامی مورد نیاز را اضافه کنیم. برای ارسال ایمیل باید از کلاس MailMessage استفاده کرد. این کلاس در دو فضای نامیSystem.Net.Mail و Syste.Web.Mail وجود دارد که فضای نامیSystem.Net.Mail جدیدتر است و توصیه می شود برای این کار از اینNamespace استفاده کنید.

using System.Net;
using System.Net.Mail;
برای ارسال ایمیل به چهار چیز نیاز داریم فرستده، گیرنده یا گیرنده ها، عنوان ایمیل، متن ایمیل پس کار را با ساختن آبجکت از کلاس MailMessage شروع می کنیم. این کلاس چهار سازنده دارد. اولین سازنده کلاس، سازنده پیش فرض است و هیچ پارامتر ورودی نمی گیرد. دومین سازنده این کلاس دو ورودی از جنس MailAddress می گیرد که به ترتیب ایمیل های فرستنده و گیرنده است.
سومین سازنده این کلاس دو ورودی از جنس رشته می گیرد که به ترتیب آدرس های فرستنده و گیرنده است. و نهایتاً آخرین سازنده این کلاس چهار ورودی از جنس رشته می گیرد که به ترتیب فرستنده ، گیرنده ، عنوان و متن ایمیل را مشخص می کند.
اگر قصد داشته باشید از سازنده دوم این کلاس استفاده کنید باید قبل از ساختن آبجکت از کلاس، دو آبجکت از کلاس MailAddress بسازید. این کلاس نیز سازنده های متنوعی دارد که رایج ترین آن ها دو ورودی از جنس رشته می گیرد ورودی اول مشخص کننده ایمیل و ورودی دوم نامی است که به کاربر نمایش داده می شود.
قطعه کد زیر برای ارسال نامه الکترونیکی با کمک سرویس دهنده ایمیل گوگل نوشته شده است. به این منظور ابتدا یک شیء از کلاس MailMessage تعریف شده و آدرس فرستنده، گیرنده ها ، موضوع و بدنه پیام تعیین می شود و سپس یک شیء smtpClient تعریف شده و با استفاده از آدرس سرویس دهنده گوگل  و نام کاربری و کلمه عبور حساب گوگل مقداردهی میشود.

using System;
using System.Windows.Forms;
using System.Net;
using System.Net.Mail;
namespace email
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnSend_Click(object sender, EventArgs e)
{
MailMessage mail = new MailMessage();
mail.From = new MailAddress("codenevisan2@gmail.com");
mail.To.Add(txtAddr.Text);
mail.Subject = "Hello";
mail.Body = txtMsg.Text;
SmtpClient server = new SmtpClient("smtp.gmail.com",587);
server.Credentials = new NetworkCredential("codenevisan2", "123asd123");
server.EnableSsl = true;
server.Send(mail);
MessageBox.Show("Message is sent");
}
}
}

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

فهرست مطالب