نحوه استفاده از Google SMTP Server برای ارسال ایمیل

دوشنبه 27 اردیبهشت 1395

در این مقاله ، یاد خواهیم گرفت که چگونه می توانیم از Google SMTP Server برای ارسال Email استفاده کنیم . برای این کار از تکنولوژی Windows Form بهره می گیریم.

نحوه استفاده از Google SMTP Server برای ارسال ایمیل

مقدمه

این مقاله به شما نشان می دهد که به آسانی می توانید تنظیمات پیکربندی Google SMTP server را تغییر بدهید و از آن برای هر برنامه ای که می خواهید استفاده کنید. برای این کار ، شما فقط به یک Gmail account احتیاج دارید. (حساب کاربری در Gmail ) شما می توانید از این سرویس برای همه ی دامنه های دیگر به جز Gmail  نیز استفاده کنید. برای استفاده از این سرویس ، یک حساب کاربری در سرور مورد نظر ، احتیاج دارید تا بتوانید به وسیله ی آن ، مقادیر موردنظر را به سرور انتقال بدهید.

عملیات مورد نیاز

-ایجاد یک برنامه ی Windows Form  با استفاده از Visual Studio

-ایجاد یک رابط کاربری مناسب برای برنامه

-اضافه کردن کدهای ضروری برای اجرایی شدن برنامه

تکنولوژی هایی که در این مقاله از آن ها بهره می بریم ، عبارتند از :

Windows forms application-

C# v5-

همچنین توضیحات بیشتر در مورد SMTP server را می توانید در لینک زیر بخوانید :

چگونگی استفاده از SMTP Server گوگل

  IDE ای که در این مقاله استفاده خواهیم کرد،   است Visual Studio 2013

مرحله 1:

یک Windows Form باز کنید .

مرحله 2 :

برای فرم خودتان رابط کاربری مناسبی مانند آنچه که در تصویر بالا می بینید، ایجاد کنید.

یک فرم جدید به پروژه اضافه کنید.

فایل های ضروری پروژه را از Toolbox  به درون فرم بکشید و بیاورید.

مشخصاتی که برای ادامه ی کار به آن ها نیاز داریم را مطابق تکه کد زیر تغییر دهید.

مرحله 3 :

کدهای مورد نیاز برای اجرایی شدن پروژه را به آن اضافه کنید.

در این پروژه از زبان C#  استفاده شده است.

متدهای ضروری و مورد نیاز برای تکمیل پروژه را به آن اضافه کنید. (مطابق زیر)

کدنویسی

    /// <summary>  
    /// This method is used to attach any files/images/etc.. to the email  
    /// </summary>  
    /// <param name="sender">sender</param>  
    /// <param name="e">e</param>  
    private void btnAttach_Click(object sender, EventArgs e)  
    {  
        OpenFileDialog openDialogue = new OpenFileDialog();  
        if (openDialogue.ShowDialog() == DialogResult.OK)  
        {  
            attachmentsListBox.Items.Add(openDialogue.FileName);  
        }  
    }  
      
    /// <summary>  
    /// This method is used to remove selected items from the attachments  
    /// </summary>  
    /// <param name="sender">sender</param>  
    /// <param name="e">e</param>  
    private void btnRemove_Click(object sender, EventArgs e)  
    {  
        var item = attachmentsListBox.SelectedItem;  
        attachmentsListBox.Items.Remove(item);  
    }  
      
    /// <summary>  
    /// This method is used to authenticate and send email. It throws exception if the   
    /// information passed is wrong and the error can be seen on label3  
    /// </summary>  
    /// <param name="sender">sender</param>  
    /// <param name="e">e</param>  
    private void btnSend_Click(object sender, EventArgs e)  
    {  
        try  
        {  
            if (ValidateForm())  
            {  
                label3.Text = "";  
                MailMessage mailMessage = new MailMessage(username.Text, toTextBox.Text);  
                mailMessage.Subject = subjectTextBox.Text;  
                mailMessage.Body = bodyTextArea.Text;  
                AddItems(ccTextBox.Text, mailMessage, "CC");  
                AddItems(bccTextBox.Text, mailMessage, "BCC");  
                for (int i = 0; i < attachmentsListBox.Items.Count; i++)   
                {  
                    mailMessage.Attachments.Add(new Attachment(attachmentsListBox.Items[i].ToString()));  
                }  
                SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587);  
                smtpClient.Credentials = new System.Net.NetworkCredential(username.Text, password.Text);  
                smtpClient.EnableSsl = true;  
                mailMessage.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;  
                smtpClient.Send(mailMessage);  
            }  
        } catch (Exception ex)  
        {  
            label3.Text = ex.Message;  
        }  
    }  
      
      
    /// <summary>  
    /// This method is used to add emails to "CC" and "Bcc" if any  
    /// </summary>  
    /// <param name="emailString">emailstring</param>  
    /// <param name="mailMessage">mailMessage</param>  
    /// <param name="type">type</param>  
    private void AddItems(string emailString, MailMessage mailMessage, string type)  
    {  
        if (!string.IsNullOrEmpty(emailString))  
        {  
            ArrayList emailList = new ArrayList();  
            String[] emails = emailString.Split(',');  
            if (type == "CC")  
            {  
                for (int i = 0; i < emails.Length; i++)  
                    mailMessage.CC.Add(new MailAddress(emails[i]));  
            } else if (type == "BCC")  
            {  
                for (int i = 0; i < emails.Length; i++)  
                    mailMessage.Bcc.Add(new MailAddress(emails[i]));  
            }  
        }  
    }  
      
    /// <summary>  
    /// This method is used to check if all the mandatory fields are entered.  
    /// It returns true if all the fields are entered else returns false.  
    /// </summary>  
    /// <returns>bool</returns>  
    private bool ValidateForm()   
    {  
            if (string.IsNullOrEmpty(username.Text) || string.IsNullOrEmpty(password.Text) || string.IsNullOrEmpty(toTextBox.Text))   
            {  
                label3.Text = "* fields are mandatory";  
                return false;  
            }  
            return true;  
        } //  

یادداشت :

کاربر می تواند این پروژه را دریافت کند و از آن به عنوان یک desktop application استفاده کند. برای این کار ، ابتدا باید پروژه دانلود بشود، کامپایل بشود و سپس یک Shortcut  از پروژه ایجاد شود :

bin -> debug->WindowsFormsApplication1.exe

بعضی اوقات ، این روش ممکن است کار نکند زیرا به مجوزی از سوی کاربر احتیاج دارد تا به پروژه ، اجازه ی دسترسی بدهد.

خطای مربوطه در این زمان عبارت است از :

در تصویر زیر مشخص شده است که چگونه کاربر می تواند اجازه ی دسترسی لازم را به پروژه بدهد.

آموزش سی شارپ

فایل های ضمیمه

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

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

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

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