Если вы посмотрите на источник здесь для SmsPdu
класса здесь , вы увидите, что существует явное ограничение в 70 символов Юникода, которое объяснит проблему, с которой вы столкнулись:
public abstract class SmsPdu : ITimestamp
{
// Omitted for brevity
/// <summary>
/// Gets the maximum Unicode message text length in characters.
/// </summary>
public const int MaxUnicodeTextLength = 70;
// Omitted for brevity
}
Возможный обходной путь
Возможный обходной путь может включать разбиение одного сообщения на несколько пакетов длиной менее 70 символов и отправку нескольких в один адресат:
public static IEnumerable<string> BatchMessage(string message, int batchSize = 70)
{
if (string.IsNullOrEmpty(message))
{
// Message is null or empty, handle accordingly
}
if (batchSize < message.Length)
{
// Batch is smaller than message, handle accordingly
}
for (var i = 0; i < message.Length; i += batchSize)
{
yield return message.Substring(i, Math.Min(batchSize, message.Length - i));
}
}
И затем просто позвоните до отправки сообщения и отправьте пакеты по отдельности:
// Open your connection
GsmCommMain comm = new GsmCommMain(4, 19200, 500);
comm.Open();
// Store your destination
var destination = "03319310077";
// Batch your message into one or more
var messages = BatchMessage(" کو ہم نے");
foreach (var message in messages)
{
// Send each one
var sms = new SmsSubmitPdu(message, destination, DataCodingScheme.NoClass_16Bit);
comm.SendMessage(sms);
}