Call smscmd.exe from your program (VB / Java / C# / C++). SMSCMD prints server response to STDOUT.
C:\\smscmd\\smscmd.exe
Password file: smscmd.key or smscmdfile.txt
Phones separated by comma
Usage 1: credentials from file (smscmd.key preferred)
smscmd "text" "phone1,phone2,phone3"
Usage 2: credentials from arguments
smscmd "text" "phone1,phone2,phone3" "email" "password"
Usage 1 (credentials from file):
' SendSMS function
Public Function SendSMS(ByVal smstext As String, ByVal phone As String) As Variant
Dim cmd As String
cmd = """" & smstext & """ """ & phone & """"
SendSMS = Shell("C:\\smscmd\\smscmd.exe " & cmd, vbNormalFocus)
End Function
' Example
Dim Totext As String
Dim Tophone As String
Dim Ret As Variant
Totext = "Put your text here"
Tophone = "07123456789,+85212345678"
Ret = SendSMS(Totext, Tophone)Usage 2 (pass email/password):
Public Function SendSMS2(ByVal smstext As String, ByVal phone As String, ByVal email As String, ByVal password As String) As Variant
Dim cmd As String
cmd = """" & smstext & """ """ & phone & """ """ & email & """ """ & password & """"
SendSMS2 = Shell("C:\\smscmd\\smscmd.exe " & cmd, vbNormalFocus)
End FunctionSample 1 — execute only (no output capture):
import java.io.IOException;
public class SendSms {
public static void main(String[] args) throws IOException {
String exe = "C:\\\\smscmd\\\\smscmd.exe";
String text = "YOUR SMS Message Here";
String phones = "+447121027123,+12048991234";
// Usage 1: password from file
new ProcessBuilder(exe, text, phones).start();
}
}Sample 2 — capture response (stdout):
import java.io.*;
import java.nio.charset.StandardCharsets;
public class SendSmsWithOutput {
public static void main(String[] args) throws Exception {
String exe = "C:\\\\smscmd\\\\smscmd.exe";
Process p = new ProcessBuilder(exe, "Hello", "+16615561234").redirectErrorStream(true).start();
try (BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream(), StandardCharsets.UTF_8))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
p.waitFor();
}
}using System;
using System.Diagnostics;
class SendSms {
static void Main() {
var exe = @"C:\\smscmd\\smscmd.exe";
var text = "Hello World!";
var phones = "+447121027123,+16615454321";
var psi = new ProcessStartInfo {
FileName = exe,
Arguments = $"\\\"{text}\\\" \\\"{phones}\\\"",
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
CreateNoWindow = true
};
using (var p = Process.Start(psi)) {
Console.WriteLine(p.StandardOutput.ReadToEnd());
Console.Error.WriteLine(p.StandardError.ReadToEnd());
p.WaitForExit();
Console.WriteLine("ExitCode=" + p.ExitCode);
}
}
}#include <windows.h>
#include <shellapi.h>
int main() {
const char* exe = "C:\\\\smscmd\\\\smscmd.exe";
const char* args = "\\\"Hello\\\" \\\"+447121027123\\\"";
ShellExecuteA(NULL, "open", exe, args, NULL, SW_HIDE);
return 0;
}CreateProcess if you need to capture output; ShellExecute is the simplest fire‑and‑forget method.
chcp 65001 (optional). SMSCMD still sends correctly.smscmd.key instead of plaintext smscmdfile.txt.-debug to validate arguments without sending SMS (if enabled in your build).