02 51 76 0 34

Accès client :  mot de passe oublié   inscription

       (oubli)

Envoyer un SMS en Kotlin

Mis à jour le 22 juillet 2026

La fonction complète pour envoyer un SMS depuis Kotlin (JVM) avec le client HTTP standard du JDK : aucune dépendance, une expression when sur le code retour, prête pour vos services et vos batchs.

1La fonction complète (Kotlin JVM, aucune dépendance)

// Sms123.kt — Envoi de SMS professionnel via l'API 123-SMS.net
// Copyright (C) 123-Sms.net — licence MIT
// Kotlin (JVM), aucune dependance : java.net.http du JDK 11+.
//
// Execution :  kotlinc Sms123.kt -include-runtime -d sms123.jar
//              java -jar sms123.jar
// Identifiants : espace client https://www.123-sms.net > rubrique API.

import java.net.URI
import java.net.URLEncoder
import java.net.http.HttpClient
import java.net.http.HttpRequest
import java.net.http.HttpResponse
import java.time.Duration

const val IDENTIFIANT = "votre_identifiant"
const val CLE_API = "CLEAPI"
const val API_URL = "https://www.123-sms.net/http.php"

fun enc(s: String): String = URLEncoder.encode(s, Charsets.UTF_8)

/** Envoie un SMS et renvoie le code retour de l'API (80 = envoye). */
fun envoyerSms(numero: String, message: String): String {
    val corps = "email=${enc(IDENTIFIANT)}&pass=${enc(CLE_API)}" +
                "&numero=${enc(numero)}&message=${enc(message)}"
    val client = HttpClient.newBuilder()
        .connectTimeout(Duration.ofSeconds(10)).build()
    val requete = HttpRequest.newBuilder(URI.create(API_URL))
        .timeout(Duration.ofSeconds(15))
        .header("Content-Type", "application/x-www-form-urlencoded")
        .POST(HttpRequest.BodyPublishers.ofString(corps))
        .build()
    // POST en HTTPS : la cle API ne transite jamais en clair
    return client.send(requete, HttpResponse.BodyHandlers.ofString()).body().trim()
}

fun main() {
    when (val code = envoyerSms("33601020304", "Bonjour, ceci est un test 123-SMS.")) {
        "80" -> println("80 : le message a ete envoye.")
        "81" -> println("81 : enregistre pour un envoi differe.")
        "82" -> println("82 : identifiants invalides.")
        "83" -> println("83 : credit insuffisant.")
        "84" -> println("84 : numero invalide.")
        else -> println("Code retour API : $code")
    }
}

2Installation et utilisation

  • Téléchargez l'archive ou copiez Sms123.kt.
  • Renseignez IDENTIFIANT et CLE_API (espace client › API).
  • Compilez : kotlinc Sms123.kt -include-runtime -d sms123.jar puis java -jar sms123.jar.
  • Dans un projet Gradle existant : copiez simplement la fonction envoyerSms(), rien à ajouter au build.
La clé API se génère dans l'espace client, rubrique API › Générer Clé API. Les codes réponse et le retour des accusés de réception par HTTP sont détaillés dans la documentation technique.

Questions fréquentes

Faut-il ajouter une dépendance au projet ?

Non : la fonction utilise java.net.http du JDK 11+, déjà présent dans tout projet Kotlin JVM. Pas de ktor, OkHttp ou Retrofit à installer pour un simple envoi de SMS.

Comment l'appeler depuis une coroutine ?

L'appel est bloquant : encapsulez-le avec withContext(Dispatchers.IO) { envoyerSms(...) } pour ne pas bloquer le thread principal. Le client peut aussi être passé en sendAsync si vous préférez un CompletableFuture.

Et depuis une application Android ?

Même règle que pour tout code distribué au public : n'embarquez pas la clé API dans l'APK. Faites appeler votre propre serveur, qui relève l'API 123-SMS — par exemple avec l'exemple Java ou Node.js côté backend.

Comment gérer les accents et les caractères spéciaux ?

URLEncoder.encode (appelé par la fonction enc) gère tout l'encodage. Un SMS standard contient 160 caractères GSM — détails sur la page nombre de caractères d'un SMS.

Téléchargement

Fonction Kotlin (.zip)

Licence MIT — libre et gratuit.

🔗 Voir sur GitHub

L'essentiel

  • API HTTPS en un appel : identifiant, clé API, numéro, message.
  • Code réponse immédiat + accusés de réception par HTTP.
  • Crédits prépayés sans abonnement ni expiration.
  • Adaptations spécifiques développées gratuitement.