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>
Comments