This repository contains models and service C# class for MainSMS XML API.
MainSMS.ru is a service to sending text message to the recipients from Russia and nearest countries.
The package is compiled for .NET 45 and .NET Platform Standard 1.4 which include .NET Core and other targets. Read about it.
PM> Install-Package MainSMS
// Create client
var client = new MainSmsClient("you project name", "your api key");
// Getting your project balance
var balanse = await client.GetBalanceAsync();
Console.WriteLine(balanse.Status == "success" ? $"balance is {balanse.Balance}"
: $"Error is {balanse.ErrorMessage}");
// Getting send price information and right format phone numbers
var price = await client.GetPriceAsync("79214445566", "test messages");
Console.WriteLine(price.Status == "success" ?
$"Price is {price.Price}. Total messages count is {price.MessageCount}"
: $"Error is {price.ErrorMessage}");
// Sending messages
var sendResult = await client.SendAsync("79214445566,+89214445566", "test message");
Console.WriteLine(sendResult.Status == "success" ?
$"Price is {sendResult.Price}. Total messages count is {sendResult.MessageCount}"
: $"Error is {sendResult.ErrorMessage}");
if (sendResult.MessageIds.Any()) //print receaved message ids.
sendResult.MessageIds.ToList().ForEach(id => Console.WriteLine($"Message id is {id}"));
// Batch sending messages
var messages = new Dictionary<string, string>();
messages.Add("89214445555", "test message 1");
messages.Add("89212223341", "test message 2");
var result = await _client.SendBatchAsync(messages, sender: "sendertest");
// If you want only test without real sending the messages
// pass testMode param, MessageIds will be empty
var testSendResult = await client.SendAsync("79214445566,+89214445566",
"test messages", testMode: true);
// Getting delivery statuses of the messages
var statuses = await client.GetStatusesAsync(sendResult.MessageIds);
if (statuses.Status=="success") // print message statuses
if (statuses.Statuses.Any())
foreach (var status in statuses.Statuses)
Console.WriteLine(
$"The status of the message {status.Key} is {status.Value}");
else Console.WriteLine($"Error is {statuses.ErrorMessage}");
// Send a delayed message
var delayedSendResult = await client.SendAsync("79214445566,+89214445566",
"test messages", startDateTime: new DateTime(2016,08,12));
// Try to cancel these messages
if (delayedSendResult.Status == "success" && delayedSendResult.MessageIds.Any())
{
var cancelResult = await client.CancelAsync(delayedSendResult.MessageIds);
if (cancelResult.Status == "success") // print messages statuses
if (cancelResult.Statuses.Any())
foreach (var status in cancelResult.Statuses)
Console.WriteLine($"The status of the message {status.Key} is {status.Value}");
}