🏠 Home ℹ️ About Us
📩 Contact Us 🔔 Notice
🔑 Log In 📝 Free Sign Up
HomeAPI & DevSend SMS with Java

Send SMS with ☕ Java

Send SMS from your Java application using the built-in HttpURLConnection — no external dependencies required.

Java · HttpURLConnection HTTPS POST v2.1
⚠️
IP whitelist required. Every API request must originate from a whitelisted server IP. Email [email protected] to whitelist your IP before your first call — non-whitelisted requests are rejected with -1003.
ℹ️
You will also need to register a free iSMS account and purchase SMS credits. Full parameters, response codes and delivery callbacks are in the SMS API documentation.
API Endpoints
Classic HTTPS GET / POST — point your integration at the primary
// 1 — PRIMARY — use this
https://www.isms.com.my/isms_send_all_id.php
// 2 — Mirror — backup only
https://smtpapi2.vocotext.com/isms_send_all_id.php
// 3 — Mirror — backup only
https://smtpapi.vocotext.com/isms_send_all_id.php
// 4 — Mirror — backup only
https://ww3.isms.com.my/isms_send_all_id.php
ℹ️
Use www.isms.com.my as your production endpoint. The other hosts are mirrors for failover only — switch to one automatically if the primary is unreachable, but do not point your integration at a mirror by default.
💡
Sending different text to each recipient? The newer JSON API (isms_send_json.php) takes up to 50 recipients per call, each with its own message, and returns structured per-recipient results. Same credentials, same sender IDs, same whitelist.
Send SMS — Java
Java · HttpURLConnection POST
import java.io.*;
import java.net.*;
import java.nio.charset.StandardCharsets;

public class IsmsSender {

    public static void main(String[] args) throws Exception {
        String apiUrl = "https://www.isms.com.my/isms_send_all_id.php";

        String params = "un="         + URLEncoder.encode("your_username",  "UTF-8") +
                        "&pwd="       + URLEncoder.encode("your_password",  "UTF-8") +
                        "&dstno="     + URLEncoder.encode("601X-XXXXXXX",   "UTF-8") +
                        "&msg="       + URLEncoder.encode("Hello from iSMS!", "UTF-8") +
                        "&type=1"    +    // 1 = ASCII, 2 = Unicode
                        "&agreedterm=YES" +
                        "&sendid="   + URLEncoder.encode("MyBrand", "UTF-8");

        byte[] postData = params.getBytes(StandardCharsets.UTF_8);

        URL url = new URL(apiUrl);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        conn.setDoOutput(true);
        conn.setConnectTimeout(15000);
        conn.setReadTimeout(30000);
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        conn.setRequestProperty("Content-Length", String.valueOf(postData.length));

        try (OutputStream os = conn.getOutputStream()) {
            os.write(postData);
        }

        int status = conn.getResponseCode();
        InputStream is = (status == 200) ? conn.getInputStream() : conn.getErrorStream();

        try (BufferedReader br = new BufferedReader(new InputStreamReader(is))) {
            String response = br.readLine();
            if (response != null && response.startsWith("2000")) {
                String trxId = response.split(":")[1];
                System.out.println("SMS sent! Transaction ID: " + trxId);
            } else {
                System.err.println("Failed: " + response);
            }
        }
        conn.disconnect();
    }
}
✅ Success
2000 = SUCCESS:1143007207
// 1143007207 is the TRX_ID — store it
// to match delivery callbacks later
❌ Error codes
-1000 UNKNOWN ERROR
-1001 AUTHENTICATION FAILED
-1002 ACCOUNT SUSPENDED / EXPIRED
-1003 IP NOT ALLOWED
-1004 INSUFFICIENT CREDITS
-1005 INVALID SMS TYPE
-1006 INVALID BODY LENGTH
-1007 INVALID HEX BODY
-1008 MISSING PARAMETER
-1009 INVALID MESSAGE CONTENT
-1010 MAX DESTINATION NUMBERS EXCEEDED
-1012 INVALID MESSAGE TYPE
-1013 INVALID TERM AGREEMENT
⚠️
Delivery status scope (Malaysia): a 2000 response confirms submission to the Telco SMSC only — not delivery to the handset. Malaysian telcos do not provide handset-level DLR by default. For confirmed Sent → Received → Read tracking, consider WhatsApp Business API.

Ready to Integrate?

Register free, get your API credentials, and start sending in minutes.

📱 SMS Coverage — Every Country We Reach Jump to a country's rate by first letter

A B C D E F G H I J K L M N O P Q R S T U V Y Z