C# .net Code



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Web;
using System.IO;

using System.Security.Cryptography;

using System.Security.Cryptography.X509Certificates;

namespace esms_client
{

public class SMSHttpPostClient
{

///

/// Method for sending single SMS.
///

/// Registered user name
/// Valid login password
/// Sender ID
/// valid Single Mobile Number
/// Message Content
/// Department generate key by login to services portal


// Method for sending single SMS.

public String sendSingleSMS(String username, String password, String senderid, String mobileNo, String message, String secureKey, String templateid, String templateid)

{
//Latest Generated Secure Key
Stream dataStream;

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; //forcing .Net framework to use TLSv1.2

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://msdgweb.mgov.gov.in/esms/sendsmsrequestDLT");
request.ProtocolVersion = HttpVersion.Version10;
request.KeepAlive = false;
request.ServicePoint.ConnectionLimit = 1;

//((HttpWebRequest)request).UserAgent = ".NET Framework Example Client";
((HttpWebRequest)request).UserAgent = "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)";

request.Method = "POST";

System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();

String encryptedPassword = encryptedPasswod(password);
String NewsecureKey = hashGenerator(username.Trim(), senderid.Trim(), message.Trim(), secureKey.Trim());
String smsservicetype = "singlemsg"; //For single message.

String query = "username=" + HttpUtility.UrlEncode(username.Trim()) +
"&password=" + HttpUtility.UrlEncode(encryptedPassword) +

"&smsservicetype=" + HttpUtility.UrlEncode(smsservicetype) +

"&content=" + HttpUtility.UrlEncode(message.Trim()) +

"&mobileno=" + HttpUtility.UrlEncode(mobileNo) +

"&senderid=" + HttpUtility.UrlEncode(senderid.Trim()) +

"&key=" + HttpUtility.UrlEncode(NewsecureKey.Trim()) +

"&templateid=" + HttpUtility.UrlEncode(templateid.Trim());


byte[] byteArray = Encoding.ASCII.GetBytes(query);

request.ContentType = "application/x-www-form-urlencoded";

request.ContentLength = byteArray.Length;



dataStream = request.GetRequestStream();

dataStream.Write(byteArray, 0, byteArray.Length);

dataStream.Close();

WebResponse response = request.GetResponse();

String Status = ((HttpWebResponse)response).StatusDescription;

dataStream = response.GetResponseStream();

StreamReader reader = new StreamReader(dataStream);

String responseFromServer = reader.ReadToEnd();

reader.Close();

dataStream.Close();

response.Close();
return responseFromServer;

}


///

/// Method for sending bulk SMS.
///

/// Registered user name
/// Valid login password
/// Sender ID
/// valid Mobile Numbers
/// Message Content
/// Department generate key by login to services portal

// method for sending bulk SMS

public String sendBulkSMS(String username, String password, String senderid, String mobileNos, String message,String secureKey, String templateid)

{
Stream dataStream;

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; //forcing .Net framework to use TLSv1.2

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://msdgweb.mgov.gov.in/esms/sendsmsrequestDLT");
request.ProtocolVersion = HttpVersion.Version10;
request.KeepAlive = false;
request.ServicePoint.ConnectionLimit = 1;

//((HttpWebRequest)request).UserAgent = ".NET Framework Example Client";
((HttpWebRequest)request).UserAgent = "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)";

request.Method = "POST";

System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();

String encryptedPassword = encryptedPasswod(password);
String NewsecureKey = hashGenerator(username.Trim(), senderid.Trim(), message.Trim(), secureKey.Trim());
Console.Write(NewsecureKey);
Console.Write(encryptedPassword);

String smsservicetype = "bulkmsg"; // for bulk msg

String query = "username=" + HttpUtility.UrlEncode(username.Trim()) +

"&password=" + HttpUtility.UrlEncode(encryptedPassword) +

"&smsservicetype=" + HttpUtility.UrlEncode(smsservicetype) +

"&content=" + HttpUtility.UrlEncode(message.Trim()) +

"&bulkmobno=" + HttpUtility.UrlEncode(mobileNos) +

"&senderid=" + HttpUtility.UrlEncode(senderid.Trim()) +

"&key=" + HttpUtility.UrlEncode(NewsecureKey.Trim()) +

"&templateid=" + HttpUtility.UrlEncode(templateid.Trim());

Console.Write(query);

byte[] byteArray = Encoding.ASCII.GetBytes(query);

request.ContentType = "application/x-www-form-urlencoded";

request.ContentLength = byteArray.Length;

dataStream = request.GetRequestStream();

dataStream.Write(byteArray, 0, byteArray.Length);

dataStream.Close();

WebResponse response = request.GetResponse();

String Status = ((HttpWebResponse)response).StatusDescription;

dataStream = response.GetResponseStream();

StreamReader reader = new StreamReader(dataStream);

String responseFromServer = reader.ReadToEnd();

reader.Close();

dataStream.Close();

response.Close();
return responseFromServer;

}


///

/// method for Sending unicode..
///

/// Registered user name
/// Valid login password
/// Sender ID
/// valid Mobile Numbers
/// Unicodemessage Message Content
/// Department generate key by login to services portal

//method for Sending unicode message..

public String sendUnicodeSMS(String username, String password, String senderid, String mobileNos, String Unicodemessage, String secureKey, String templateid)

{
Stream dataStream;

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; //forcing .Net framework to use TLSv1.2

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://msdgweb.mgov.gov.in/esms/sendsmsrequestDLT");
request.ProtocolVersion = HttpVersion.Version10;
request.KeepAlive = false;
request.ServicePoint.ConnectionLimit = 1;

//((HttpWebRequest)request).UserAgent = ".NET Framework Example Client";
((HttpWebRequest)request).UserAgent = "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)";

request.Method = "POST";

System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();
String U_Convertedmessage = "";

foreach (char c in Unicodemessage)
{
int j = (int)c;
String sss = "&#" + j + ";";
U_Convertedmessage = U_Convertedmessage + sss;
}
String encryptedPassword = encryptedPasswod(password);
String NewsecureKey = hashGenerator(username.Trim(), senderid.Trim(), U_Convertedmessage.Trim(), secureKey.Trim());


String smsservicetype = "unicodemsg"; // for unicode msg
String query = "username=" + HttpUtility.UrlEncode(username.Trim()) +
"&password=" + HttpUtility.UrlEncode(encryptedPassword) +
"&smsservicetype=" + HttpUtility.UrlEncode(smsservicetype) +
"&content=" + HttpUtility.UrlEncode(U_Convertedmessage.Trim()) +
"&bulkmobno=" + HttpUtility.UrlEncode(mobileNos) +
"&senderid=" + HttpUtility.UrlEncode(senderid.Trim()) +
"&key=" + HttpUtility.UrlEncode(NewsecureKey.Trim())+

"&templateid=" + HttpUtility.UrlEncode(templateid.Trim());



byte[] byteArray = Encoding.ASCII.GetBytes(query);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
String Status = ((HttpWebResponse)response).StatusDescription;
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
String responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
return responseFromServer;
}



///

/// Method for sending OTP MSG.
///

/// Registered user name
/// Valid login password
/// Sender ID
/// valid single Mobile Number
/// Message Content
/// Department generate key by login to services portal

// Method for sending OTP MSG.

public String sendOTPMSG(String username, String password, String senderid, String mobileNo, String message, String secureKey, String templateid)

{
Stream dataStream;

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; //forcing .Net framework to use TLSv1.2

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://msdgweb.mgov.gov.in/esms/sendsmsrequestDLT");
request.ProtocolVersion = HttpVersion.Version10;
request.KeepAlive = false;
request.ServicePoint.ConnectionLimit = 1;

//((HttpWebRequest)request).UserAgent = ".NET Framework Example Client";
((HttpWebRequest)request).UserAgent = "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)";

request.Method = "POST";
System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();

String encryptedPassword = encryptedPasswod(password);
String key = hashGenerator(username.Trim(), senderid.Trim(), message.Trim(), secureKey.Trim());

String smsservicetype = "otpmsg"; //For OTP message.

String query = "username=" + HttpUtility.UrlEncode(username.Trim()) +
"&password=" + HttpUtility.UrlEncode(encryptedPassword) +

"&smsservicetype=" + HttpUtility.UrlEncode(smsservicetype) +

"&content=" + HttpUtility.UrlEncode(message.Trim()) +

"&mobileno=" + HttpUtility.UrlEncode(mobileNo) +

"&senderid=" + HttpUtility.UrlEncode(senderid.Trim()) +
"&key=" + HttpUtility.UrlEncode(key.Trim())+

"&templateid=" + HttpUtility.UrlEncode(templateid.Trim());




byte[] byteArray = Encoding.ASCII.GetBytes(query);

request.ContentType = "application/x-www-form-urlencoded";

request.ContentLength = byteArray.Length;



dataStream = request.GetRequestStream();

dataStream.Write(byteArray, 0, byteArray.Length);

dataStream.Close();

WebResponse response = request.GetResponse();

String Status = ((HttpWebResponse)response).StatusDescription;

dataStream = response.GetResponseStream();

StreamReader reader = new StreamReader(dataStream);

String responseFromServer = reader.ReadToEnd();

reader.Close();

dataStream.Close();

response.Close();
return responseFromServer;

}


// Method for sending UnicodeOTP MSG.

///

/// method for Sending unicode..
///

/// Registered user name
/// Valid login password
/// Sender ID
/// valid Mobile Numbers
/// Unicodemessage Message Content
/// Department generate key by login to services portal

//method for Sending unicode message..

public String sendUnicodeOTPSMS(String username, String password, String senderid, String mobileNos, String UnicodeOTPmsg, String secureKey, String templateid)
{
Stream dataStream;

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; //forcing .Net framework to use TLSv1.2

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://msdgweb.mgov.gov.in/esms/sendsmsrequestDLT");
request.ProtocolVersion = HttpVersion.Version10;
request.KeepAlive = false;
request.ServicePoint.ConnectionLimit = 1;

//((HttpWebRequest)request).UserAgent = ".NET Framework Example Client";
((HttpWebRequest)request).UserAgent = "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)";

request.Method = "POST";
System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();

String U_Convertedmessage = "";

foreach (char c in UnicodeOTPmsg)
{
int j = (int)c;
String sss = "&#" + j + ";";
U_Convertedmessage = U_Convertedmessage + sss;
}
String encryptedPassword = encryptedPasswod(password);
String NewsecureKey = hashGenerator(username.Trim(), senderid.Trim(), U_Convertedmessage.Trim(), secureKey.Trim());


String smsservicetype = "unicodeotpmsg"; // for unicode msg
String query = "username=" + HttpUtility.UrlEncode(username.Trim()) +
"&password=" + HttpUtility.UrlEncode(encryptedPassword) +
"&smsservicetype=" + HttpUtility.UrlEncode(smsservicetype) +
"&content=" + HttpUtility.UrlEncode(U_Convertedmessage.Trim()) +
"&bulkmobno=" + HttpUtility.UrlEncode(mobileNos) +
"&senderid=" + HttpUtility.UrlEncode(senderid.Trim()) +
"&key=" + HttpUtility.UrlEncode(NewsecureKey.Trim())+

"&templateid=" + HttpUtility.UrlEncode(templateid.Trim());



byte[] byteArray = Encoding.ASCII.GetBytes(query);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
String Status = ((HttpWebResponse)response).StatusDescription;
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
String responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
return responseFromServer;
}


///

/// Method to get Encrypted the password
///

/// password as String"

protected String encryptedPasswod(String password)
{

byte[] encPwd = Encoding.UTF8.GetBytes(password);
//static byte[] pwd = new byte[encPwd.Length];
HashAlgorithm sha1 = HashAlgorithm.Create("SHA1");
byte[] pp = sha1.ComputeHash(encPwd);
// static string result = System.Text.Encoding.UTF8.GetString(pp);
StringBuilder sb = new StringBuilder();
foreach (byte b in pp)
{

sb.Append(b.ToString("x2"));
}
return sb.ToString();

}

///

/// Method to Generate hash code
///

/// your last generated Secure_key

protected String hashGenerator(String Username, String sender_id, String message, String secure_key)
{

StringBuilder sb = new StringBuilder();
sb.Append(Username).Append(sender_id).Append(message).Append(secure_key);
byte[] genkey = Encoding.UTF8.GetBytes(sb.ToString());
//static byte[] pwd = new byte[encPwd.Length];
HashAlgorithm sha1 = HashAlgorithm.Create("SHA512");
byte[] sec_key = sha1.ComputeHash(genkey);

StringBuilder sb1 = new StringBuilder();
for (int i = 0; i < sec_key.Length; i++)
{
sb1.Append(sec_key[i].ToString("x2"));
}
return sb1.ToString();
}

}

}

class MyPolicy : ICertificatePolicy
{
public bool CheckValidationResult(ServicePoint srvPoint, X509Certificate certificate, WebRequest request, int certificateProblem)
{
return true;
}
}