This tutorial show you how to send email via SMTP (Free Gmail.com SMTP) in C#.Net Window Form. Includes CC, BCC, html content and attachment files.

1. Create new winform project

2. Design form like below

3. Open Form .CS file

- Add Mail function references:
using System.Net.Mail;
using System.Net;
- Add attachment files:
+) In design add listBox to show attachment files.
+) Attach Button action:
Define global file dialog
OpenFileDialog dlgopenFile = new OpenFileDialog();
Add attachment into listBox
dlgopenFile.Title = "Choose files attach";
dlgopenFile.Multiselect = true;
dlgopenFile.InitialDirectory = "C:\\";
if (dlgopenFile.ShowDialog() == DialogResult.OK)
{
     string[] fileName = dlgopenFile.FileNames;
     int i = fileName.Length;
     for (int j = 0; j < i; j++)
     {
          lstfiles.Items.Add(fileName[j]);
     }               
}
Remove attachment button ( choose line on listBox to remove )
while (lstfiles.SelectedItems.Count > 0)
{
     lstfiles.Items.Remove(lstfiles.SelectedItem);
}
+) Sent mail button event:
MailMessage MyMailMessage = new MailMessage(youradress_tbox.Text, toadress_tbox.Text);
            // Add BCC
            if (txtBCC.Text.Trim() != string.Empty)
            {
                string[] bccMail = this.txtBCC.Text.Trim().Split(';');
                for (int i = 0; i < bccMail.Length; i++)
                {
                    MyMailMessage.Bcc.Add(bccMail[i].ToString());
                }
            }
            // Add CC
            if (this.txtCC.Text.Trim() != string.Empty)
            {
                string[] ccMail = this.txtCC.Text.Trim().Split(';');
                for (int i = 0; i < ccMail.Length; i++)
                {
                    MyMailMessage.CC.Add(ccMail[i].ToString());
                }
            }
            // Create mail body
            MyMailMessage.Subject = subject_tbox.Text; ;
            MyMailMessage.Body = this.content_tbox.Text; ;
            MyMailMessage.IsBodyHtml = true;
            // Attachment file
            string sFile;
            if (lstfiles.Items.Count > 0)
            {
                for (int i = 0; i < lstfiles.Items.Count; i++)
                {
                    lstfiles.SelectedIndex = i;
                    sFile = lstfiles.Text;
                    if (sFile != string.Empty)
                    {
                        Attachment attachment = new Attachment(sFile);
                        MyMailMessage.Attachments.Add(attachment);
                    }
                }
            }
            //MyMailMessage.IsBodyHtml = false;
            // Create Cre email
            NetworkCredential mailAuthentication = new NetworkCredential(youradress_tbox.Text, this.pass_tbox.Text.Trim());
            // Create SMTP Gmail
            SmtpClient mailClient = new SmtpClient("smtp.gmail.com", 587);
            mailClient.EnableSsl = true;
            mailClient.UseDefaultCredentials = false;
            mailClient.Credentials = mailAuthentication;
            if (mailClient.Timeout.ToString() == "10000")
            {
                MessageBox.Show("Time out!");
            }
            else
            {
                try
                {
                    mailClient.Send(MyMailMessage);
                    MessageBox.Show("Send success!");
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Send mail error: " + ex.Message);
                }
            }
+) Exit button event:
Application.Exit();
+) Download full project source (password: 9tuts.net)

Note:
  • Run app without proxy server or open port of SMTP server
  • You can fix your name and password in a .config file
  • Comment if you have any question