ایجاد SMTP Server و ارسال ایمیل با استفاده از #C

سه شنبه 3 شهریور 1394

در این مقاله می آموزیم که چگونه یک SMTP Server برای خود ایجاد کرده و با استفاده از#C ایمیل ارسال کنیم.

ایجاد SMTP Server و ارسال ایمیل با استفاده از #C

بسیاری از شرکت ها دسترسی به وب سایت های خاصی مانند Gmail و Yahoo را ممنوع کرده اند. شما باید امکان ارسال ایمیل را به برنامه خود اضافه کنید و چک کنید آیا درست کار می کند یا خیر، اما چطور می  توانید این کار را انجام دهید؟
به جای وابسته بودن به Gmail و Yahoo می توانیم SMTP Server خود را راه اندازی کرده و به راحتی عملکرد آن را بررسی کنیم.
نرم افزارهای رایگان بسیاری وجود دارند که hMailServer یکی از آنهاست که open-source بوده و از پروتکل های رایج مانند (SMTP، IMAP، POP3) پشتیبانی می کند.
hMailServer را که حجم آن تقریبا  3MB است دانلود کرده و مراحل نصب آن را طبق این دستورالعمل دنبال نمایید.
در ادامه، نحوه پیکربندی آن را به شما آموزش خواهیم داد:
پس از نصب، باید DNS را در سیستم local برای بررسی عملکرد hMailServer  تنظیم کنیم. به فولدر hMailServer رفته و hMailServer Administration را باز می کنیم.

روی دکمه “Add domain” در صفحه باز شده کلیک کرده و نام دلخواهی برای آن انتخاب می کنیم.

روی دکمه “Save” کلیک می کنیم. Domains را از سمت چپ پنجره، همان طور که در شکل نشان داده شده است از بین 3 فولدر ایجاده شده به طور پیش فرض، انتخاب کرده و باز می کنیم.


روی فولدر Accounts راست کلیک کرده و گزینه Add را انتخاب می کنیم. در اینجا به عنوان تست، دو کاربر اضافه می کنیم.


3 فیلد مربوط به آدرس، پسورد و حداکثر سایز را پرکرده و روی دکمه Save کلیک می کنیم. کاربر دیگری را هم به همین ترتیب ایجاد می کنیم. حال ما یک دامنه به نام “Demo.com’ با دو کاربر ایجاد کردیم. (user1@demo.com, user2@demo.com)

برای اضافه کردن یک entry به دامنه خود در فایل Hosts به ترتیب زیر عمل می کنیم:

1. Command Prompt را باز می کنیم.

2. کلمه "Drivers" را تایپ کرده و روی دکمه ''Ok" کلیک می کنیم.

3. فولدر "etc" را باز کرده و سپس فایل Hosts را باز می کنیم.

4. entry زیر را وارد کرده و فایل را ذخیره می کنیم.

127.0.0.1demo.com

تذکر: قبل از ایجاد هر تغییری در فایل Hosts، یک نسخه پشتیبان از آن تهیه نمایید!

حال می خواهیم چک کنیم که SMTP به درستی پیکربندی شده است یا خیر. Command Prompt را باز کرده و دستور زیر را وارد می کنیم:

telnet demo.com 25

اگر پیکربندی به درستی انجام شده باشد، صفحه زیر را مشاهده خواهیم کرد:

قدم بعدی تنظیمات Database می باشد. دیتابیس جایی است که همه تنظیمات در آن ذخیره می شود. این نرم افزار دیتابیس های زیر را پشتیبانی می نماید:

- Microsoft SQL Server 2000 و نسخه های بعدی

- MySQL

- PostgreSQL

برای پیکربندی دیتابیس hMailServer به فولدر Installation رفته و hMailServer Database را باز می کنیم.

روی دکمه Next کلیک می کنیم.

گزینه “Create a new hMailServer Database” را انتخاب کرده و روی دکمه Next کلیک می کنیم و سپس Microsoft SQL Server را انتخاب کرده و دوباره روی Next کلیک می کنیم.


نام سرور و دیتابیس موجود را به آن می دهیم و همچنین نحوه احراز هویت را مشخص کرده و روی دکمه Next کلیک می کنیم.

این مرحله، دیتابیسی با جدول های زیر در SQL Server ایجاد می کند. تمام تنظیمات مربوط به ایمیل در این دیتابیس می باشد.

به این ترتیب یک SMTP Server در سیستم Local خود ساختیم. حال با یک برنامه Console در #C عملکرد ارسال ایمیل را بررسی می کنیم.


    class Program   
    {  
        static void Main(string[] args)   
        {  
            string mailstatus = SendEmail("user2@demo.com", "Testmail", "Hey i have setup my own SMTP server.Let us check it out!!!");  
            Console.WriteLine(mailstatus);  
            Console.ReadKey();  
        }  
        public static string SendEmail(string toAddress, string subject, string body) {  
            string result = "Message Sent Successfully..!!";  
            string senderID = "user1@demo.com";  
            const string senderPassword = "password";  
            try {  
                SmtpClient smtp = new SmtpClient   
                {  
                    Host = "demo.com",  
                    Port = 25,  
                    DeliveryMethod = SmtpDeliveryMethod.Network,  
                    Credentials = new System.Net.NetworkCredential(senderID, senderPassword),  
                    Timeout = 30000,  
                };  
                MailMessage message = new MailMessage(senderID, toAddress, subject, body);  
                smtp.Send(message);  
            }   
            catch (Exception ex)   
            {  
                result = "Error sending email.!!!";  
            }  
            return result;  
        }  
    }  

اگر خروجی بالا را مشاهده نمایید به این معنی است که کار به درستی انجام شده است. برای اینکه مطمئن شویم user1 به user2 ایمیلی ارسال کرده است، دیتابیس را چک می کنیم.

SQL Server Management Studio را باز کرده، به دیتابیس متصل می شویم و کوئری زیر را در آن اجرا می کنیم.

در این کوئری چک کردیم که آیا user2 از uder1 ایمیلی دریافت کرده است یا خیر، همانطور که می بینیم user2 ایمیل را دریافت کرده است. همه ایمیل ها در یک فولدر و به صورت رمزشده نگه داری می شود.

به مسیری که hMailServer را نصب کرده ایم، می رویم.

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

همه اطلاعاتی که در #C تنظیم کرده ایم، اینجا قابل مشاهده است.

آموزش سی شارپ

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 3k بازدید
  • 6 تشکر

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

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید